sql >> データベース >  >> RDS >> Mysql

mysqldumpスキーマのみ、ドロップなしのスキーマ更新

    MySQLは何を更新するかをどのように知るのでしょうか?他の誰かのデータベースがどのような状態になるかを知ることができないため、どの更新を適用するかを知ることができません。また、更新には、スキーマの変更以上のものが必要になることがよくあります。すでに存在するデータへの変更が必要な場合や、古いスキーマから新しいスキーマにデータを移動する必要がある場合があります。そのすべてを自動的に検出するものを手に入れることは決してありません。

    正しい解決策は、移行を作成することです。データベースを変更するたびに、開発コピーのスキーマを自分で変更するのではなく、以前のスキーマから新しいスキーマに更新するスクリプトを作成します(通常は、以前のスキーマにダウングレードするスクリプトを作成します。これにより、次のことが可能になります。更新をロールバックする必要がある場合)。このスクリプトは、スキーマの変更やデータの移動などに必要なすべてのことを実行します。

    Ruby onRails などの最新のWebフレームワーク 、移行をサポートして、すでに実行した移行を追跡しやすくします。移行をサポートするフレームワークを使用していない場合は、移行を適用するための独自のスクリプトを作成するのはそれほど難しいことではありません。各移行に番号を付けるか、日付を入れて、データベースに現在のスキーマのバージョンのみを格納するテーブルを保持します。移行スクリプトを実行するときに、現在のバージョンよりも新しい移行がある場合は、それらのスクリプトを順番に適用してから、データベース内の現在のバージョンを示す番号を更新します。




    1. INTフィールドでLIKE比較を実行する

    2. Doctrine 2 DQLを使用してサブクエリに参加できますか?

    3. `SqlDbType.Structured`を使用してNHibernateでテーブル値パラメーターを渡すことは可能ですか?

    4. ORを使用したmysqlSELECTIFステートメント