1

早上好,

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

当我正在“Forward 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') ”行。

我提前感谢您的帮助!

山姆

4

2 回答 2

3

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

于 2013-01-30T10:26:27.467 回答
1

问题似乎出在 INDEX DIRECTORY 选项中。那必须指向一个文件。有关创建表的完整语法手册,请参见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 表使用符号链接”。

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

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

于 2013-01-30T10:25:34.770 回答