データベーススキーマの変更(列の追加、列の名前の変更、テーブルの名前の変更、データ型など)を必要とする新しいソフトウェアリリースのために、古いデータベーススキーマを更新したいと考えています。保存されているデータを失わずに古いスキーマを新しいスキーマに適合させるのに役立つMySQLデータベースの比較ツールはありますか? (無料ソフトウェアが望ましい)
はい、変更は手動で行うことができます。しかし、私たちはより快適な方法を探し、加えられたすべての変更をキャッチします。
Red Gateには、Microsoft SQL Server向けの一般的なSQL Compareと同様のMySQL Compareツールが用意されています。
http://mysql-compare.com/info?source=products-a-page
MySQL比較バンドルは、非営利目的、個人使用、および慈善団体や教育セクターのユーザーは無料です。ソース: https://www.red-gate.com/products/mysql/mysql-comparison-bundle/index
これはとてもセクシーな答えではありませんが、mysqldumpとsdiffです。
mysqldump -u root -p --no-data -h oldHost databases db1 db2 db3 > /tmp/old.sql
mysqldump -u root -p --no-data -h newHost databases db1 db2 db3 > /tmp/new.sql
sdiff /tmp/old.sql /tmp/new.sql
sdiffは、>または<インジケーターとペアになった差分と並べて比較します。私はこれがあなたが説明する正確なシナリオで役立つことがわかりました。
この例では、新しいスキーマが別のホストで初期化されていると想定していますが、これは必須要件ではありません。同じホスト上の異なるインスタンス(ポートなど)または異なるデータベース名を持つ同じインスタンスである可能性があります。