MySQL:ERROR 1017(HY000):创建表

时间:2015-11-26 14:08:39

标签: mysql

我在这里搜索了这个错误,但没有真正与我的问题有关。

我正在尝试调试以

开头的脚本
CREATE TABLE IF NOT EXISTS 'tablename' (...)

然而,在脚本和控制台上的MySQL客户端中都出现了这个错误:

ERROR 1017(HY000):找不到文件:'tablename'(错误号:2)

奇怪的是:数据库完全是空的。

我检查了什么:

- mysql Server以用户'mysql'运行,具有mysql数据库的目录和文件属于同一用户并且具有足够的权限(读/写/执行)。

- 我用来登录mysql客户端的用户有权创建表。

在mysql客户端中,我甚至可以删除空数据库并再次创建它,但我仍然无法创建表。

编辑:它在某种程度上是表名的问题。我刚刚将“Test”添加到tablename的末尾,然后它工作,尽管我多次删除并创建数据库。我假设表名仍然以某种方式缓存在mysql中。该脚本在没有问题的情况下在同一台服务器上运行,但由于它是一个临时表,因此该表稍后被删除。

EDIT2:管理员重新启动了数据库,这解决了问题,而没有对原始命令进行任何更改。

1 个答案:

答案 0 :(得分:1)

不要使用单引号作为表名。试试这个:

CREATE TABLE IF NOT EXISTS `tablename` (...)

如果tablename不是保留关键字,那么没有反引号也会起作用:

CREATE TABLE IF NOT EXISTS tablename (...)

检查datadir的权限。运行:

mysql -uUSERNAME -p -e 'SHOW VARIABLES WHERE Variable_Name LIKE "%dir"'

并更改权利/所有权。例如,OP的评论链接中显示的那个:

chown -R mysql:mysql datadir