2016-11-30 40 views
2

我試圖設置從MySQL到Postgres的簡單複製。完全相同的模式。在按照Demo Tutorial中的步驟稍作修改(使用MySQL和Postgres驅動程序)後,我仍無法使複製工作。基於運行bin/symSymmetricDS Postgres目標爲所有sym_ *表提供「無法讀取表」

  1. SET GLOBAL show_compatibility_56 = ON需要在MySQL數據庫
  2. Postgres的我需要使用protocolVersion=3而不是2這是在例如設置要設置後需要投訴

    一些變化。

奇怪的是,SymmetricDS能夠創建sym_*表,但抱怨無法讀取它們。我已經驗證了bin/sym運行之前表不存在,但確實存在。這裏是從日誌摘錄

// Successful creation of table 
[store-001] - PostgreSqlSymmetricDialect - DDL applied: CREATE TABLE "sym_notification"(
    "notification_id" VARCHAR(128) NOT NULL, 
    ... 
    PRIMARY KEY ("notification_id") 
) 

... 

// Unable to read from created table 
[store-001] - PostgreSqlDdlReader - Failed to read table: sym_notification 
[store-001] - PostgreSqlDdlReader - Failed to read table: sym_notification 
[store-001] - AbstractDatabaseWriter - Did not find the sym_notification table in the target database 
[store-001] - PostgreSqlDdlReader - Failed to read table: sym_monitor 
[store-001] - PostgreSqlDdlReader - Failed to read table: sym_monitor 
[store-001] - AbstractDatabaseWriter - Did not find the sym_monitor table in the target database 

同樣的錯誤適用於所有sym_*表。

數據庫在Docker中運行,但由於SymmetricDS並不是抱怨無法連接,並且能夠創建表,我認爲它與Docker無關。

Postgres DB中的數據庫由engines/store-001.properties中指定的用戶創建。這仍然可以與角色和訪問權限有關嗎?

+0

任何錯誤消息在Postgres的服務器日誌? –

+0

是的,在它記錄的每個STATEMENT之前,有一個錯誤消息:'錯誤:列am.amcanorder不存在於字符427' @NickBarnes – hanshenrik

+0

看起來像SymmetricDS不支持您的Postgres版本。 'pg_am.amcanorder'列[在9.5](https://www.postgresql.org/docs/9.5/static/catalog-pg-am.html),但是[在9.6中刪除](https:/ /www.postgresql.org/docs/9.6/static/catalog-pg-am.html)。 –

回答

2

如果您從Postgres升級到最新的JDBC驅動程序,它將起作用。

從最新從這裏更換從lib目錄中已有的Postgres驅動程序:https://jdbc.postgresql.org/download.html

+1

驅動程序將在3.8.11中更新。 https://www.symmetricds.org/issues/view.php?id=2926 – chenson42

0

嘗試使用來自某些數據庫導航器的symmetric-ds使用的相同用戶名/密碼連接到postgres數據庫,例如Jetbrain's Datagrip,然後嘗試插入,更新或從sym_ *表中選擇某些內容。必要時爲用戶分配訪問權限。

+0

這工作正常,所以一定有其他的東西是錯的。 – hanshenrik

0

當運行bin/sym

ERROR: column am.amcanorder does not exist at character 427 

的問題是使用的Postgres 9.5.5解決了在使用的Postgres 9.6.1(當前最新版本)被記錄在服務器上下面的錯誤,而不是感謝Nick Barnes指出這一點在comment

相關問題