Posted at

MySQLの全テーブルにprefixを追加する方法

某案件で開発環境のDBテーブルはprefixなしだけど、テスト環境ではprefixありという案件があり、prefix無し環境だと問題ないけど、prefix有り環境だとエラーが発生するというのが度々あったので、開発環境もprefix有りにするために、一括でprefixを追加する方法を調べたのでメモしておきます。

まず全テーブルのALTER TABLE文を生成するクエリの実行。("prefix_"を追加したprefixに変更し、データベース名を対象とするDB名に変更して実行する)

SELECT Concat('ALTER TABLE `', TABLE_NAME, '` RENAME TO `prefix_', TABLE_NAME, '`;') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'データベース名';

これでALTER TABLE文が全テーブル分出力されるので、出力された各ALTER文を実行すればprefix追加完了です。

ALTER TABLE生成のSQLは下記で見つけました。

rename - How to add prefix of all tables in mysql - Stack Overflow