我在这里搜索了这个错误,但没有真正与我的问题有关。
我正在尝试调试以
开头的脚本CREATE TABLE IF NOT EXISTS 'tablename' (...)
然而,在脚本和控制台上的MySQL客户端中都出现了这个错误:
ERROR 1017(HY000):找不到文件:'tablename'(错误号:2)
奇怪的是:数据库完全是空的。
我检查了什么:
- mysql Server以用户'mysql'运行,具有mysql数据库的目录和文件属于同一用户并且具有足够的权限(读/写/执行)。
- 我用来登录mysql客户端的用户有权创建表。
在mysql客户端中,我甚至可以删除空数据库并再次创建它,但我仍然无法创建表。
编辑:它在某种程度上是表名的问题。我刚刚将“Test”添加到tablename的末尾,然后它工作,尽管我多次删除并创建数据库。我假设表名仍然以某种方式缓存在mysql中。该脚本在没有问题的情况下在同一台服务器上运行,但由于它是一个临时表,因此该表稍后被删除。
EDIT2:管理员重新启动了数据库,这解决了问题,而没有对原始命令进行任何更改。
答案 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