MySQL创建表错误 - 表不存在。

14

我是MySQL的新手,遇到一个问题:在我新建的数据库"recommend"中创建表格时,出现以下错误:

ERROR 1146 (42S02): 表格 'recommend.Users' 不存在

我查看了这里和互联网上的相关帖子,但没有什么能帮助我解决这个问题。如果我使用MySQL命令行,我仍然会得到同样的错误。

SELECT DATABASE() FROM DUAL;

+------------+

| DATABASE() |

+------------+

| recommend  |

+------------+

1 row in set (0.00 sec)

但是,当我运行这个命令时:

mysql> use recommend
Database changed

mysql> CREATE TABLE Users (UserName VARCHAR(20),password VARCHAR(20),PRIMARY KEY(UserName));

错误 1146 (42S02): 表 'recommend.Users' 不存在

我也尝试使用 Navicat,但仍然收到相同的错误 :(

3个回答

16

我曾经也遇到了同样的问题。在找到一个简单的解决方案之前,我确实阅读了这个帖子。我试图删除我的表格,结果行得通了,在你的情况下,你需要删除的表格是User:

DROP TABLE Users;

由于该表不存在,因此MySQL自然会抱怨:

Error Code: 1051. Unknown table 'Users'

但是之后我再次运行了创建表格语句,它奏效了。希望其他人可以验证这种方法是否总是有效的?比查看错误日志要简单得多,尤其是如果你不是最伟大的数据库管理员/系统管理员/黑客。


比在文件系统中瞎搞容易多了!谢谢! - Michael
可以运行。谢谢。 - bam
对我也起作用了。如果您不关心表数据备份,这是一种优雅的方式。 - sba
如果这对你也有效,但如果对你无效,请尝试在同一脚本中先编写DROP命令,再编写CREATE命令。 - user1623454

7
这看起来像是一个数据字典的问题。您可以通过查看错误日志获取更多信息。(请参见MySQL文档这里)
可能是您有一个孤立的表。如果是这样,解决方法是在不同的数据库中创建一个同名的表,然后将.frm文件复制到当前数据库。然后您可以使用DROP命令删除该表,并随后的CREATE应该成功。有关此类问题的详细故障排除信息,请点击这里

我刚刚卸载了MySQL服务器并删除了旧表,现在问题已经解决了。 - Amit P
非常感谢你的帮助!谢谢你!干杯! - Amit P

1
问题是... 您有一个使用"InnoDB ENGINE"的数据库...... 我的解决方案是... 您必须使用"MyISAM ENGINE", 如何更改?...在您的环境中查找可能会发现
# find / -name my.cnf

在LINUX上,只需将以下行添加到HTML中即可:

on LINUX, simply add the following line to

vim /etc/mysql/my.cnf 

添加:
default-storage-engine= MyISAM

然后重新启动mysql:
service mysql restart

这个有效。非常感谢。但是我没有在我的配置中更改它,只是在查询中添加了它。 - hannad rehman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接