早上好,
我正在使用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')”行。
我提前感谢您的帮助!
萨姆
答案 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始终返回错误。它不会覆盖指定目录中的文件。