2012-09-16 100 views
11

我想通過快照我的數據庫的當前狀態來開始使用liquibase生成changeLog。Liquibase - 如何生成現有數據庫的更新日誌

環境的詳細信息:

  • 操作系統:Windows 7 32 86,
  • 的Java JDK 1.7,從MySQL
  • liquibase 2.0.5
  • MySQL JDBC驅動程序。

我運行命令行以下操作:

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"/> 

並沒有表在我的數據庫上創建(我期待用於跟蹤的兩個表)。

我錯過了什麼?


編輯

是的,我指的是liquibasechanlog和liquibasechangelock表。我知道他們應該自動出現在數據庫中。我的問題是他們爲什麼不在那裏。是的,提供的用戶有權執行此類任務。

而且它不是一個空的數據庫。它有近20桌,10次,數據...

+0

通過用於跟蹤的兩個表,你的意思是'liquibasechangelog'和'liquibasechangeloglock'?這些實際上不是用liquibase.xml管理的,而是爲你自動創建的。 –

+0

擴展Christoph提出的要求。你的數據庫不包含應用程序表,你在問爲什麼changelog是空的? :-) –

+5

如果我沒有在連接url中指定數據庫--url =「jdbc:mysql://mysql.mysite.com」,那麼我描述了相同的行爲,但是如果我添加數據庫名稱工作正常:'--url =「jdbc:mysql://mysql.mysite.com/dummy」'。 – poussma

回答

7

剛剛與--url標誌像ZNK特定該數據庫名:

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

生成XML的changelog PostgreSQL的時候我曾面臨類似的問題,數據庫。如果它可以幫助某人,我在這裏張貼。 除了上述參數之外,我必須指定--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 
0

創建初始changelog文件後,你應該執行「changelogsync」,它會在數據庫中創建這些表和更新它們,還記錄你的更新日誌的當前狀態爲「已經運行」(所以不會在下次更新中執行)

相關問題