2014-03-24 85 views
0

我想让这个mysql查询工作,但它不会。如何纠正此问题?

CREATE TABLE IF NOT EXISTS `gospel_library`.`catalog_book_files` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `book_id` INT NOT NULL, 
    `book_order` INT NOT NULL DEFAULT 0, 
    `added` DATETIME NOT NULL, 
    `modified` DATETIME NOT NULL, 
    `version` INT NOT NULL DEFAULT 1, 
    `downloads` INT NOT NULL DEFAULT 0, 
    `file` VARCHAR(100) NOT NULL, 
    `uri` VARCHAR(500) NOT NULL, 
    PRIMARY KEY (`id`), 
    INDEX `catalog_book_files_ndx1` (`book_id` ASC, `book_order` ASC), 
    INDEX `catalog_book_files.fk1_idx`(), 
    CONSTRAINT `catalog_book_files.fk1` 
    FOREIGN KEY() 
    REFERENCES `gospel_library`.`catalog_book`() 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB 
DEFAULT CHARACTER SET = utf8; 

1064 - 你有一个错误的SQL语法;检查对应于你的MySQL服务器版本正确的语法使用 接近“))参考,约束catalog_book_files.fk1外键( `GOSP”手册,在第13行

我试图找出解决办法,我将用来纠正这一点。任何帮助,将不胜感激。

+0

您必须指定外交和候选键。 –

+1

您可能想让标题更具信息性:) –

回答

3

问题是你正在创建一个没有指定列的索引。要么删除

INDEX `catalog_book_files.fk1_idx`(), 

或将其更改为指定一个或多个列

INDEX `catalog_book_files.fk1_idx` (`somecolumn`), 
+0

我没有将它链接到列的问题是,这是某人创建并正在使用的数据库,他们将它发送给我以帮助处理一些数据。 – Vincenzo

+1

您的问题*是*,并将其链接到一列。现在的索引是无效的。如果有人向你发送了这个消息,那么他们发给你一个无效的脚本。 – GolezTrol

+0

他们给我发送了一个MySQL Workbench模型。不是一个SQL文件。 – Vincenzo