web-dev-qa-db-ja.com

MySQLデータベースをバージョン管理下に置きますか?

現在、PHPプロジェクトにSVNを使用しています。データベースもバージョン管理下に置くべきだと考えていましたが、それを行う最善の方法は何ですか?db-folderを作成するだけですか? SVNのプロジェクトで、SQLの変更をfrom_1.0_to_2.0.sqlというファイルに貼り付けてコミットしますか?

46
user479911

データベースに変更を加えるときはいつでも、移行でそれらの変更を保存する必要があります。その後、コードを更新すると同時に他のサーバーで実行できます。しかし、あなたは基本的に正しい考えを得ました。より自動化するツールを作成できます。たとえば、各ファイルをバージョン管理し、migration_versionデータベース内。現在のバージョンのデータベースが含まれます。その後、データベースを最新の状態にするために必要なすべての移行を実行する移行スクリプトを作成できます。

双方向のデータベースバージョン管理が必要な場合(以前のデータベースバージョンに戻すことができるように)、各バージョンに対しても必要なクエリを記述する必要があることに注意してください。

MySQLdiff など、移行の作成に役立つツールもいくつかあります

19
reko_t

最近(2012年12月)、別のオプションがあることに注意してください:DBV(データベースバージョン)

これは Githubプロジェクト に基づいており、スキーマ管理、改訂スクリプトなどを備えたデータベースバージョン管理Webアプリケーションです。

database schema

31
VonC

チェックアウト

リキベース

http://www.liquibase.org/quickstart

アイデアはこれです:

すべてのデータベースの変更は、人間が読めるが追跡可能な形式で保存され、ソース管理にチェックインされます。- Liquibase.org フロントページ

これは、このホイールがすでに記述されており、ロールできる状態であることを除いて、最高評価の回答とほぼ同じプロセスでデータベースをバージョン管理できる素晴らしいソフトウェアです。私は仕事でそれを使用します、それは素晴らしい解決策です。どのように機能するかを学習したい場合は自分で実装しますが、ツールを使って作業を完了させたい場合はLiquibaseが最適に機能します。

13
Brandon

MySQL Workbenchツール を使用できます。

モデリングツールで生成されたファイルは、SVNで簡単に保存できます。このツールを使用すると、データベースをモデルと双方向で同期できます。

1
fluminis

kdbv は、mysqlテーブルの変更を追跡せずに、mysqlデータベースを古いものから現在の最新バージョンにアップグレードするのに役立ちます。

0
Ganesh Kandu

Laravel -PHPフレームワークは非常に便利に思えますが、大きなBUTが1つあります。Laravel =「Eloquent」と呼ばれるORM言語( here )。したがって、何らかの重大なプロジェクトのデータベースを設計および保守する必要がある場合は、まだ使用できません。

0
Srneczek