私は自分のMySQL create table文をSQLite create table文に変換しようとしています。そのほとんどは私がやったが、私はMySQLのユニークインデックスをSqlites CREATE INDEXに変更する方法を知らない(私はこれらがほぼ同じであると思っていた。SQLiteでCREATE INDEXを正しく行う方法
だから私は、次のMySQLのテーブルを持っている(それはから少しも変わっています:
-- -----------------------------------------------------
-- Table `pyMS`.`feature`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `pyMS`.`feature` (
`feature_id` VARCHAR(40) NOT NULL ,
`intensity` DOUBLE NOT NULL ,
`overallquality` DOUBLE NOT NULL ,
`quality` DOUBLE NOT NULL ,
`charge` INT NOT NULL ,
`content` VARCHAR(45) NOT NULL ,
`msrun_msrun_id` INT NOT NULL ,
PRIMARY KEY (`feature_id`, `msrun_msrun_id`) ,
UNIQUE INDEX `id_UNIQUE` (`feature_id` ASC) ,
INDEX `fk_feature_msrun1` (`msrun_msrun_id` ASC) ,
CONSTRAINT `fk_feature_msrun1`
FOREIGN KEY (`msrun_msrun_id`)
REFERENCES `pyMS`.`msrun` (`msrun_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
そして私はhttp://www.sqlite.org/lang_createindex.htmlに応じてインデックスを変更し、私はまた、SQLiteのにMySQLのから行くためにいくつかの他のものを変更するが、私でした。それをテストし、彼らが働く だからこれは私のSQLiteのコードです:。。私はそれが仕事をしINDEX行を削除すると
-- -----------------------------------------------------
-- Table `feature`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `feature` (
`feature_id` VARCHAR(40) NOT NULL ,
`intensity` DOUBLE NOT NULL ,
`overallquality` DOUBLE NOT NULL ,
`quality` DOUBLE NOT NULL ,
`charge` INT NOT NULL ,
`content` VARCHAR(45) NOT NULL ,
`msrun_msrun_id` INT NOT NULL ,
CREATE UNIQUE INDEX `id_UNIQUE` ON `feature` (`feature_id` ASC) ,
CREATE INDEX `fk_feature_msrun1` ON `msrun` (`msrun_msrun_id` ASC) ,
CONSTRAINT `fk_feature_msrun1`
FOREIGN KEY (`msrun_msrun_id`)
REFERENCES `msrun` (`msrun_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
これは動作しません。私の知る限りINDEXラインがこの説明に準拠して見ることができるように。 210、どこが間違っているのかわかりません。だから、私はどのように2つの行を変更することができます
CREATE UNIQUE INDEX `id_UNIQUE` ON `feature` (`feature_id` ASC) ,
CREATE INDEX `fk_feature_msrun1` ON `msrun` (`msrun_msrun_id` ASC) ,
正しい構文を作るには?