1

我正在使用 Mysql v5.5.14,当我尝试执行时:

mysql> CREATE TABLE IF NOT EXISTS LONGBOW_products.universal_partname (
    ->    part_id SMALLINT(5) UNSIGNED NOT NULL DEFAULT 0,
    ->    PRIMARY KEY (part_id)
    -> );

它返回给我一个错误:

ERROR 1005 (HY000): Can't create table 'LONGBOW_products.universal_partname' (errno: -1)

但是,当我尝试从表名中删除下划线时,它返回 true:

mysql> CREATE TABLE IF NOT EXISTS LONGBOW_products.universal (
    ->    part_id SMALLINT(5) UNSIGNED NOT NULL DEFAULT 0,
    ->    PRIMARY KEY (`part_id`)
    -> );
Query OK, 0 rows affected (0.00 sec)

我想知道您是否不能在较新版本的 Mysql 上的表名中再使用下划线?

4

2 回答 2

2

不确定你是否解决了这个问题。我用一个非常简单的 CREATE 语句遇到了类似的问题:错误代码:1005。无法创建表“UCQ.country”(错误号:-1)。

根据http://dev.mysql.com/doc/refman/5.5/en/innodb-error-codes.html “如果错误消息指的是错误 –1,则表创建可能失败,因为该表包含一个列名匹配内部 InnoDB 表的名称。”

但是,当我查看 mysql_error_log.err: 21107 18:23:19 InnoDB: Error creating file './ucq/country.ibd' 时,我解决了我的问题。121107 18:23:19 InnoDB:文件操作中的操作系统错误号 17。InnoDB:错误号 17 表示“文件存在”。InnoDB:InnoDB 中描述了一些操作系统错误编号:http: //dev.mysql.com/doc/refman/5.5/en/operating-system-error-codes.html InnoDB:尽管相应的表确实存在,但该文件已经存在not InnoDB:存在于 InnoDB 数据字典中。您是否在不使用 SQL 命令 InnoDB: DISCARD TABLESPACE 和 IMPORT TABLESPACE 的情况下移动了 InnoDB InnoDB: .ibd 文件,或者 InnoDB: mysqld 在 CREATE TABLE 中间崩溃了吗?您可以 InnoDB: 通过删除文件 './ucq/country.ibd' 解决问题 InnoDB: 在 '

所以我只是删除了 country.ibd 并且我的 CREATE 语句运行顺利。

于 2012-11-07T21:20:48.653 回答
0

数据库和表名不能包含“/”, “\”, “.”,或文件名中不允许的字符。

参考:http ://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

消除 ”。” 从表名

于 2012-04-03T02:29:25.010 回答