2017-01-24 6 views
0

私はSnowflake DBのタイヤを蹴って、Liquibaseでどのように動作するか見たいと思っていました。私は、Snowflakeがタイムスタンプフィールドを持っているのにLiquibaseがdatetimeのデータ型でSQLを発行しようとしているので、databasechangelogテーブルを作成するときに問題に遭遇しています。liquibaseとsnowflake dbを使用している問題

私はhttp://www.liquibase.org/databases.htmlのアイデアに従って、liquibaseの配備の外でdatabasechangelogテーブルを作成しました。

CREATE TABLE bruces.DATABASECHANGELOG (ID VARCHAR(255) NOT NULL, AUTHOR VARCHAR(255) NOT NULL, FILENAME VARCHAR(255) NOT NULL, DATEEXECUTED timestamp NOT NULL, ORDEREXECUTED INT NOT NULL, EXECTYPE VARCHAR(10) NOT NULL, MD5SUM VARCHAR(35), DESCRIPTION VARCHAR(255), COMMENTS VARCHAR(255), TAG VARCHAR(255), LIQUIBASE VARCHAR(20), CONTEXTS VARCHAR(255), LABELS VARCHAR(255)) 

その後、私はmavenを介してliquibaseのデプロイメントを開始しました。

WARNING 1/24/17 5:03 PM: liquibase: Unknown database: Snowflake 
[INFO] Executing on Database: jdbc:snowflake://*****.snowflakecomputing.com/?db=BRUCE_DB&warehouse=BRUCE_WH 
INFO 1/24/17 5:03 PM: liquibase: Successfully acquired change log lock 
INFO 1/24/17 5:03 PM: liquibase: Creating database history table with name: bruces.DATABASECHANGELOG 
INFO 1/24/17 5:03 PM: liquibase: Successfully released change log lock 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 15.432 s 
[INFO] Finished at: 2017-01-24T17:03:56-06:00 
[INFO] Final Memory: 16M/305M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.4.0:update (default) on project snowflake.snowflake_app: Error setting up or running Liquibase: SQL compilation error: 
[ERROR] Unsupported data type 'TOK_DATETIME'. [Failed SQL: CREATE TABLE bruces.DATABASECHANGELOG (ID VARCHAR(255) NOT NULL, AUTHOR VARCHAR(255) NOT NULL, FILENAME VARCHAR(255) NOT NULL, DATEEXECUTED datetime NOT NULL, ORDEREXECUTED INT NOT NULL, EXECTYPE VARCHAR(10) NOT NULL, MD5SUM VARCHAR(35), DESCRIPTION VARCHAR(255), COMMENTS VARCHAR(255), TAG VARCHAR(255), LIQUIBASE VARCHAR(20), CONTEXTS VARCHAR(255), LABELS VARCHAR(255))] 
[ERROR] -> [Help 1] 

liquibaseはデータベースの変更ログテーブルを見つけられないため、作成しようとしても失敗するようです。

+0

私はSnowflakeのヒストリーメカニズムを使って実行されたクエリを見て、 "1つのレコードを返す" DATABASECHANGELOG 'をアカウント内で表示することを確認します。しかし、それは先に進み、とにかくテーブルを作成しようとします。 –

+0

私はSnowflake用のLiquibase拡張を書き終えました。 https://github.com/CDKGlobal/liquibase-snowflake/から入手できます。 –

答えて

1

SnowflakeDBについて何も知らない場合は、SnowflakeDBの新しいデータベース実装を作成することをお勧めします。 SQLの方言はかなり異なります。早期に問題が発生している場合は、移動するにつれてより多くの問題にぶつかる可能性が高くなります。

+0

ええ、私は、スノーフレークに進むと、リキベースのスノーフレークエクステンションを書くことが正しい方法だと思います。 –

0

今日、SnowflakeはDATETIMEデータ型をサポートしていないという問題があります。標準のSQLであるDATETIMESTAMPをサポートしています。

Snowflakeに追加するための継続的な取り組みがあります。チームにアップデートの追加を依頼します。

+0

うん、私はSnowflakeがDATETIMEをサポートしていないことを知っている。そのため、DATABASECHANGELOGテーブルを通常のプロセスの外に追加し、DATETIMEをTIMESTAMPに変更しました。次に、LiquibaseはSnowflakeの方言を理解していないので、とにかくテーブルを作成しようとすると失敗するという問題があります。私は、DATETIMEデータ型の版を見ることを楽しみにしています。 –

関連する問題