0

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 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 は主キーの一意の制約を認識できません。

4

1 に答える 1

0

考えられる理由は、SQLite の奇妙な癖である可能性があります。主キーに関する場合、正確な言葉遣いに敏感です。

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

PRIMARY KEY 列は、宣言された型名が正確に「INTEGER」である場合にのみ、整数の主キーになります。「INT」、「BIGINT」、「SHORT INTEGER」、「UNSIGNED INTEGER」などの他の整数型名により、主キー列は行 ID のエイリアスとしてではなく、整数の類似性と一意のインデックスを持つ通常のテーブル列として動作します。

于 2012-07-06T10:48:53.007 に答える