我有一个perl脚本,它使用模块'SQL :: Translator'将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 :: Translator'模块将其转换为最终的sql时,我在最终的sql中获得了以下行:
CREATE INDEX "table1" ON "table2" ("table1");
使用 sqlite3 命令将此最终sql文件转换为sqlite时,我收到以下错误。
已经有一个名为table1的索引错误:在第540行附近:没有这样的 table:main.table1
我试图从最终的sql中删除行'CREATE INDEX "table1" ON "table2" ("table1");'
,然后它运行正常。
提供帮助
答案 0 :(得分:0)
与MySQL不同,SQLite对表和索引使用相同的命名空间 - 您不能拥有与表同名的索引。您需要更改索引的名称。