我正在尝试将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=utf8 ENGINE=InnoDB;
当我使用DBconvert为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无法识别主键的独特约束。
答案 0 :(得分:0)
可能的原因可能是SQLite奇怪的怪癖:它与主键有关的确切措辞很敏感:
http://www.sqlite.org/lang_createtable.html#rowid
如果是PRIMARY KEY列,则只变为整数主键 声明的类型名称正好是“INTEGER”。其他整数类型的名称 “INT”或“BIGINT”或“SHORT INTEGER”或“UNSIGNED INTEGER”导致 主键列表现为具有整数的普通表列 亲和力和唯一索引,而不是rowid的别名。