我有一個使用模塊'SQL :: Translator'將Mysql轉換轉換爲sqlite的perl腳本。將mysql轉換爲sqlite時出錯
Mysql的文件有如下:
CREATE TABLE `table1` (
`id1` char(4) NOT NULL,
`text1` char(2) NOT NULL,
`text2` char(2) NOT NULL,
`text3` enum('N','Y') NOT NULL,
UNIQUE KEY `id1` (`id1`,`text1`,`text2`),
CONSTRAINT `table1_ibfk_1` FOREIGN KEY (`id1`) REFERENCES `table2` (`id1`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
在使用「SQL ::譯者模塊將其轉換爲最終的SQL,我得到最終的SQL下面一行:
CREATE INDEX "table1" ON "table2" ("table1");
轉換這個時候最後的sql文件到sqlite使用sqlite3命令,我得到以下錯誤。
there is already an index named table1 Error: near line 540: no such table: main.table1
我試圖從最終的SQL刪除行'CREATE INDEX "table1" ON "table2" ("table1");'
,然後它工作正常。
請幫助
這裏的東西看起來不一致。你可以按原樣粘貼腳本嗎? 'table1'實際上是'table2'中列的名稱嗎? – 2014-09-01 07:35:50
你爲什麼想要做這個轉換?如果是用於創建測試數據庫,請查看https://metacpan.org/pod/Test::mysqld - SQLite不是使用數據庫的理想選擇,它將忽略FOREIGN KEY約束,例如 – plusplus 2014-09-01 09:42:35