現在、PHPプロジェクトにSVNを使用しています。データベースもバージョン管理下に置くべきだと考えていましたが、それを行う最善の方法は何ですか?db-folderを作成するだけですか? SVNのプロジェクトで、SQLの変更をfrom_1.0_to_2.0.sqlというファイルに貼り付けてコミットしますか?
データベースに変更を加えるときはいつでも、移行でそれらの変更を保存する必要があります。その後、コードを更新すると同時に他のサーバーで実行できます。しかし、あなたは基本的に正しい考えを得ました。より自動化するツールを作成できます。たとえば、各ファイルをバージョン管理し、migration_version
データベース内。現在のバージョンのデータベースが含まれます。その後、データベースを最新の状態にするために必要なすべての移行を実行する移行スクリプトを作成できます。
双方向のデータベースバージョン管理が必要な場合(以前のデータベースバージョンに戻すことができるように)、各バージョンに対しても必要なクエリを記述する必要があることに注意してください。
MySQLdiff など、移行の作成に役立つツールもいくつかあります
最近(2012年12月)、別のオプションがあることに注意してください:DBV(データベースバージョン)
これは Githubプロジェクト に基づいており、スキーマ管理、改訂スクリプトなどを備えたデータベースバージョン管理Webアプリケーションです。
チェックアウト
http://www.liquibase.org/quickstart
アイデアはこれです:
すべてのデータベースの変更は、人間が読めるが追跡可能な形式で保存され、ソース管理にチェックインされます。- Liquibase.org フロントページ
これは、このホイールがすでに記述されており、ロールできる状態であることを除いて、最高評価の回答とほぼ同じプロセスでデータベースをバージョン管理できる素晴らしいソフトウェアです。私は仕事でそれを使用します、それは素晴らしい解決策です。どのように機能するかを学習したい場合は自分で実装しますが、ツールを使って作業を完了させたい場合はLiquibaseが最適に機能します。
MySQL Workbenchツール を使用できます。
モデリングツールで生成されたファイルは、SVNで簡単に保存できます。このツールを使用すると、データベースをモデルと双方向で同期できます。
kdbv は、mysqlテーブルの変更を追跡せずに、mysqlデータベースを古いものから現在の最新バージョンにアップグレードするのに役立ちます。