我目前使用mysql作爲我的數據庫並使用flyway來管理數據庫模式。我所有的單元測試都針對mysql運行,並且在添加更多單元測試時運行速度非常慢。現在我想在單元測試中將數據庫從mysql更改爲h2內存數據庫。以下是我的h2 db連接設置:如何使mysql數據庫模式與h2數據庫兼容
#Datasource
spring.datasource.url=jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE;DATABASE_TO_UPPER=true
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.default-transaction-isolation-level=1
當我運行flywayMigrate時,出現了一些sql錯誤。下面是一個例子,這個sql用於在mysql上創建一個表,但是無法在h2上運行。
CREATE TABLE `file_storage` (
`id` BIGINT(64) NOT NULL AUTO_INCREMENT,
`file_name` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
DEFAULT CHARACTER SET = utf8;
下面是我從h2得到的錯誤。我不知道我的SQL有什麼問題。有沒有辦法讓h2接受mysql數據庫模式?
Execution failed for task ':dbschema:flywayMigrate'.
> Error occurred while executing flywayMigrate
Migration V2016_02_26_12_59__create_file_storage.sql failed
-----------------------------------------------------------
SQL State : 42000
Error Code : 42000
Message : Syntax error in SQL statement "CREATE TABLE ""FILE_STORAGE"" (
""ID"" BIGINT(64) NOT NULL AUTO_INCREMENT,
""FILE_NAME"" VARCHAR(45) NULL,
PRIMARY KEY (""ID""))
DEFAULT CHARACTER[*] SET = UTF8 "; SQL statement:
CREATE TABLE `file_storage` (
`id` BIGINT(64) NOT NULL AUTO_INCREMENT,
`file_name` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
DEFAULT CHARACTER SET = utf8 [42000-190]
Location : db/migration/V2016_02_26_12_59__create_file_storage.sql (/Users/yzzhao/dev/cooltoo/cooltoo_backend/dbschema/build/resources/main/db/migration/V2016_02_26_12_59__create_file_storage.sql)
Line : 1
Statement : CREATE TABLE `file_storage` (
`id` BIGINT(64) NOT NULL AUTO_INCREMENT,
`file_name` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
DEFAULT CHARACTER SET = utf8
Syntax error in SQL statement "CREATE TABLE ""FILE_STORAGE"" (
""ID"" BIGINT(64) NOT NULL AUTO_INCREMENT,
""FILE_NAME"" VARCHAR(45) NULL,
PRIMARY KEY (""ID""))
DEFAULT CHARACTER[*] SET = UTF8 "; SQL statement:
CREATE TABLE `file_storage` (
`id` BIGINT(64) NOT NULL AUTO_INCREMENT,
`file_name` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
DEFAULT CHARACTER SET = utf8 [42000-190]
編輯
我有上百個SQL腳本這是在mysql中運行良好。所以我不想在這些腳本中改變任何東西。有沒有辦法讓h2接受mysql腳本?
替換或刪除';或嘗試http://topnew.net/sidu單擊表desc,然後複製過去創建表SQL,不需要'當不需要時 – SIDU
我試圖刪除所有'但SQL'中的'語法錯誤'錯誤。我有超過一百個sql腳本,我不想一個接一個地改變它們。所有這些sql在mysql中工作良好。所以我徘徊是否有辦法配置h2 db來接受這些語法。 –