从mysql转换为sqlite

时间:2012-07-06 08:49:54

标签: 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=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无法识别主键的独特约束。

1 个答案:

答案 0 :(得分:0)

可能的原因可能是SQLite奇怪的怪癖:它与主键有关的确切措辞很敏感:

http://www.sqlite.org/lang_createtable.html#rowid

  

如果是PRIMARY KEY列,则只变为整数主键   声明的类型名称正好是“INTEGER”。其他整数类型的名称   “INT”或“BIGINT”或“SHORT INTEGER”或“UNSIGNED INTEGER”导致   主键列表现为具有整数的普通表列   亲和力和唯一索引,而不是rowid的别名。