将mysql转换为sqlite时出错

时间:2014-09-01 07:15:19

标签: mysql perl sqlite

我有一个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");',然后它运行正常。

提供帮助

1 个答案:

答案 0 :(得分:0)

与MySQL不同,SQLite对表和索引使用相同的命名空间 - 您不能拥有与表同名的索引。您需要更改索引的名称。