MySql错误1103

时间:2013-01-30 10:20:29

标签: mysql mysql-workbench

早上好,

我正在使用MySql Workbench来创建我的一些数据库,自从这个星期一起我没有遇到任何问题。

我是“前进Engeneer”我的模型,所有表都是没有问题的,除了这个人在这里:

Executing SQL script in server
ERROR: Error 1103: Incorrect table name '1'

CREATE  TABLE IF NOT EXISTS `sigemV2`.`macro` (
  `MACRO_ID` INT(11) NOT NULL AUTO_INCREMENT ,
  `MACRO_ADDRESS` VARCHAR(255) NOT NULL ,
  `MACRO_DESCRIPTION` VARCHAR(255) NOT NULL ,
  `MACRO_MACRO_KIND_ID` INT(11) NOT NULL ,
  PRIMARY KEY (`MACRO_ID`) ,
  INDEX `fk_MACRO_MACRO_KIND1_idx` (`MACRO_MACRO_KIND_ID` ASC) ,
  CONSTRAINT `MACRO_KIND_ID`
    FOREIGN KEY (`MACRO_MACRO_KIND_ID` )
    REFERENCES `sigemV2`.`macrokind` (`MACRO_KIND_ID` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
AUTO_INCREMENT = 1
DEFAULT CHARACTER SET = utf8
INDEX DIRECTORY = '1'

我已经习惯了MySql工作台,但这让我很疯狂:(。

我也尝试了phpMyAdmin,但我有同样的错误(1103),但区别在于phpMyAdmin将问题指向“主键('MACRO_ID')”行。

我提前感谢您的帮助!

萨姆

2 个答案:

答案 0 :(得分:2)

INDEX DIRECTORY = '1'索引目录必须引用有效目录。

答案 1 :(得分:1)

问题似乎出现在INDEX DIRECTORY选项中。这必须指向一个文件。 有关create table的完整语法手册,请参阅https://dev.mysql.com/doc/refman/5.5/en/create-table.html

该页面上有关INDEX DIRECTORY的章节:

  

通过使用DATA DIRECTORY ='directory'或INDEX DIRECTORY ='directory',您可以指定MyISAM存储引擎应放置表的数据文件和索引文件的位置。该目录必须是目录的完整路径名,而不是相对路径。

     

仅当您不使用--skip-symbolic-links选项时,这些选项才有效。您的操作系统还必须具有正常运行的线程安全的realpath()调用。有关更完整的信息,请参见第8.11.3.1.2节“在Unix上使用MyISAM表的符号链接”。

     

如果创建的MyISAM表没有DATA DIRECTORY选项,则会在数据库目录中创建.MYD文件。默认情况下,如果MyISAM在这种情况下找到现有的.MYD文件,则会覆盖它。这同样适用于没有INDEX DIRECTORY选项创建的表的.MYI文件。要禁止此行为,请使用--keep_files_on_create选项启动服务器,在这种情况下,MyISAM不会覆盖现有文件并返回错误。

     

如果使用DATA DIRECTORY或INDEX DIRECTORY选项创建MyISAM表并且找到现有的.MYD或.MYI文件,则MyISAM始终返回错误。它不会覆盖指定目录中的文件。