2012-07-06 2 views
0

je suis en train de convertir une base de données MySql à SQLite, mais je suis face à un problème avec la contrainte unique de clé primaire, voici mon code de table MySql:convertion de MySQL à SQLite

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; 

et quand je le convertir en utilisant dbconvert pour SQLite & MySql voici ce que je reçois:

CREATE TABLE table01 (
    idtable1 int PRIMARY KEY NOT NULL DEFAULT 0, 
    nom1  varchar(50) DEFAULT NULL 
); 

CREATE UNIQUE INDEX idtable1 
    ON table01 
    (idtable1); 

donc quand je lis ma base de données, « en utilisant SQLite Maestro », SQLite Maestro méconnaisse contraint unique de la clé primaire.

Répondre

0

Raison possible peut être bizarrerie de SQLite: il est sensible au sujet du libellé exact quand il est sur les clés primaires:

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

Une colonne de clé primaire ne devient une clé primaire entier si le Le nom de type déclaré est exactement "INTEGER". "INT" ou "BIGINT" ou "INTEGER COURT" ou "INTEGER INTEGER" fait que la colonne de clé primaire se comporte comme une colonne de table ordinaire avec une affinité et un index unique, pas comme un alias pour le rowid.

+0

J'ai essayé cela mais avec aucun résultat encore le row-id remplaçant ma clé primaire ... – cascadox