2015-07-06 44 views
0

我有HSQLDB的問題,我有我傾倒到內存HSQLDB我得到以下錯誤MySQL數據庫,當我運行該腳本:Error: unexpected token: (這是在創建表腳本和違規行是TINYINT(3) 如果我刪除括號和它的工作正常的號碼,這是一個有效的MYSQL聲明,我試圖通過更改我的網址轉換爲:jdbc:hsqldb:mem:dataSource;sql.syntax_mys=true MYSQL兼容性,但這仍然行不通。 :(MYSQL到HSQLDB移民問題

只是作爲附加信息我使用一個Spring Hibernate的連接,並使用Liquibase做從MySQL傾銷HSQLDB和我跑HSQLDB V2.3.2

+0

切換到HSQLDB 2.3.3以獲得更多擴展的MySQL兼容模式。 TINYINT(3)只是TINYINT的詳細形式。 – fredt

+0

感謝,現在就升級並讓你知道 – ThaSaleni

+0

您好@fredt升級我的HSQLDB版本並沒有解決這個問題,我仍然得到同樣的錯誤,有沒有辦法將HSQLDB設置爲在變量之後igonore大括號,如果它不'需要他們嗎? – ThaSaleni

回答

2

SQL語法尤其是DDL不是很順利不同的數據庫之間進行移植。你必須學會​​在HSQLDB女巫創建表的正確的語法是從MySQL有所不同。

您可以從數據庫和進口的一個味道到另一個不只是導出表的定義。 將是巨大的如果這將是這種情況,但SQL標準是相當寬鬆的...

+0

但HSQLD據說對MYSQL有一個兼容模式,我開啓了這個功能,這就是爲什麼我期望這樣工作 – ThaSaleni

+0

正如@fredt指出的那樣問題在於,使用TINYINT時,HSQLDB的風格很可能不允許大小規範。因此,在TINYINT之後刪除所有大括號將會有所幫助。當你使用類似Liquidbase的東西時,你應該考慮使用一種更加中立的格式,比如YML。這可能會遷移不同SQL版本之間的不兼容性。 –

+0

謝謝@ tobias-kremer 我要升級,看看是否可以工作,我也不想刪除大括號手動導致整個過程對我來說無用,如果需要一些手動干預 – ThaSaleni

0

我假設你有一個DDL腳本,你可以在其頂部添加SET DATABASE SQL SYNTAX MYS TRUE;,另請參閱here(表13.29。 MySQL樣式語法)。

您可以僅將它用於測試;如果你想完全遷移到HSQLDB,改變腳本本身就是長期的解決方案。

+0

sql.syntax_mys = true做同樣的事情 – ThaSaleni