从mysql到sqlite的转换
我正在尝试将MySql数据库转换为Sqlite,但我面临主键唯一约束的问题,以下是我的MySql表代码:从mysql到sqlite的转换,mysql,sqlite,Mysql,Sqlite,我正在尝试将MySql数据库转换为Sqlite,但我面临主键唯一约束的问题,以下是我的MySql表代码: CREATE TABLE `table01` ( `idtable1` INT(11) NOT NULL DEFAULT 0, `nom1` VARCHAR(50) NULL DEFAULT NULL, PRIMARY KEY (`idtable1` ASC), UNIQUE KEY `idtable1` (`idtable1` ASC) ) DEFAULT CHARSET
CREATE TABLE `table01` (
`idtable1` INT(11) NOT NULL DEFAULT 0,
`nom1` VARCHAR(50) NULL DEFAULT NULL,
PRIMARY KEY (`idtable1` ASC),
UNIQUE KEY `idtable1` (`idtable1` ASC)
) DEFAULT CHARSET=utf8 ENGINE=InnoDB;
当我使用DBconvert for SQLite&MySql转换它时,我得到的是:
CREATE TABLE table01 (
idtable1 int PRIMARY KEY NOT NULL DEFAULT 0,
nom1 varchar(50) DEFAULT NULL
);
CREATE UNIQUE INDEX idtable1
ON table01
(idtable1);
因此,当我阅读数据库“使用SQLite Maestro”时,SQLite Maestro无法识别主键的唯一约束 可能的原因可能是SQLite的奇怪怪癖:当涉及主键时,它对确切的措辞非常敏感: 只有在以下情况下,主键列才会成为整数主键: 声明的类型名正好是“整数”。其他整数类型名称,如 “INT”或“BIGINT”或“SHORT INTEGER”或“UNSIGNED INTEGER”会导致 主键列的行为类似于带整数的普通表列 关联和唯一索引,而不是作为rowid的别名