スポンサーリンク

MySQLでDBに設定されているプライマリキーからAUTO_INCREMENTを追加するALTER文を生成する

前回に引き続きAWSのDMSで移行したデータベースはプライマリキーに対してAUTO_INCREMENTが設定されないとのことだったので、移行元のinformation_schemaからプライマリキーの情報を取得し一括でAUTO_INCREMENTを設定するSQLを作成しました。

今回のAUTO_INCREMENTが移行されない件についてはAWSのドキュメントに普通に書いてありました。

MySQL 互換データベースの AWS Database Migration Service のソースとしての使用 – AWS Database Migration Service

作成したSQLは以下の通りです。

SELECT
 CONCAT(
   "ALTER TABLE ",
   TABLE_NAME,
   " CHANGE ",
   COLUMN_NAME,
   " ",
   COLUMN_NAME,
   " ",
   COLUMN_TYPE,
   " AUTO_INCREMENT;"
 ) as alter_auto_increment
FROM
 information_schema.columns
WHERE
 table_schema = "[database_name]"
and is_nullable = "NO"
and column_key = "PRI"
and extra = "auto_increment"
;

実行してみたところ以下のようになりました。

システムによってはWhere句で調整が必要かもしれません。前回のSQL以上に使い道がないと思います。

タイトルとURLをコピーしました