web-dev-qa-db-ja.com

Liquibase-既存のデータベースの変更ログを生成する方法

データベースの現在の状態のスナップショットから始めて、changeLogを生成するためにliquibaseを使用しようとしています。

環境の詳細:

  • OS:Windows 7 32 x86、
  • Java JDK 1.7、
  • mySQLのmysqljdbcドライバー
  • liquibase2.0.5。

コマンドラインから次のコマンドを実行します。

liquibase --driver=com.mysql.jdbc.Driver --changeLogFile=./structure.xml --url="jdbc:mysql://mysql.mysite.com" --username=<myuser> --password=<mypass> generateChangeLog

正常に動作し、出力ファイルを生成しました。ただし、出力ファイルには次のものが含まれています。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd"/>

そして、私のデータベースにはテーブルが作成されていません(追跡に使用される2つのテーブルを期待していました)。

何が足りないのですか?


編集

はい、liquibasechanlogテーブルとliquibasechangelockテーブルを参照しています。それらはデータベースに自動的に表示されるはずです。私の質問は、なぜ彼らがそこにいないのかということです。そして、はい、提供されたユーザーはそのようなタスクを実行するために付与された権利を持っています。

そして、それは空のデータベースではありません。 20近くのテーブル、10のビュー、データがあります...

13
Dave

[〜#〜] znk [〜#〜]のように--urlフラグを使用してデータベース名を指定するだけです。

  --url="jdbc:mysql://mysql.mysite.com/database_name_here"
10

Postgresqlデータベースのchangelogxmlを生成するときに、同様の問題に直面していました。それが誰かを助けることができるならば、私はここに投稿しています。上記のパラメータに加えて、--defaultSchemaNameを指定する必要がありました。したがって、mysqlには同様のオプションがあります。

最終的なコマンドは次のようになります。

liquibase --driver=org.postgresql.Driver --changeLogFile=db.changelog.xml  --classpath=postgresql-9.4-1201-jdbc41.jar --url="jdbc:postgresql://localhost:5432/wms"  --username=<USER_NAME> --password=<PASSWD> --defaultSchemaName=<SCHEMA_NAME> generateChangeLog   
5
Narasimha