我试图将我的MySQL创建表语句转换为SQLite创建表语句。大部分我已经完成了,但是我不知道如何将MySQL的UNIQUE INDEX更改为Sqlite 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改变了指数,确实也改变了一些其他的东西从MySQL去SQLite的,但我。测试它和他们的工作 所以这是我的SQLite代码:
-- -----------------------------------------------------
-- 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);
这不工作时,我删除索引行,它的工作就我所看到的指标线符合这一描述。 210,我没有看到它出错的地方。那么如何更改这两行
CREATE UNIQUE INDEX `id_UNIQUE` ON `feature` (`feature_id` ASC) ,
CREATE INDEX `fk_feature_msrun1` ON `msrun` (`msrun_msrun_id` ASC) ,
使其语法正确?