MySQL 创建表错误 - 表不存在

Posted

技术标签:

【中文标题】MySQL 创建表错误 - 表不存在【英文标题】:MySQL Create Table Error - Table Doesn't Exist 【发布时间】:2013-08-04 18:18:01 【问题描述】:

我是 mysql 新手,我遇到了一个问题,如果我尝试在我新创建的数据库“推荐”中创建一个表,我会收到以下错误:

错误 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,但仍然遇到同样的错误 :(

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。在我幸运地找到一个简单的解决方案之前,我实际上阅读了这个帖子。我试图删除我的表并且它有效,在你的情况下你的表是用户:

删除表用户;

表不存在,自然MySQL报错:

错误代码:1051。未知表“用户”

但是我再次运行了我的 CREATE TABLE 语句并且它起作用了。希望其他人每次都能验证这个作品吗?比查看错误日志要容易得多,尤其是如果您不是最出色的 DBA/系统管理员/黑客。

【讨论】:

比在文件系统中乱搞要容易得多!谢谢! 为我工作。谢谢 也为我工作。如果您不关心表数据备份,这是一种优雅的方式。 也适用于我,如果它对您不起作用,请尝试在同一脚本中的 CREATE 命令之前编写 DROP 命令。【参考方案2】:

这看起来像一个数据字典问题。您可以通过检查错误日志来获取更多信息。 (参见 MySQL 文档here)。

可能,您有一个孤立的表。如果是这样,解决方法是在不同的数据库中创建同名表,然后将.frm文件复制到当前数据库。然后你可以DROP 表,随后的CREATE 应该会成功。有关解决此类问题的更多详细信息可以找到here

【讨论】:

我刚刚卸载了mysql服务器并删除了旧表,现在修复了这个问题。 非常感谢您的帮助 :) 干杯 :)【参考方案3】:

问题是... 你有一个带有“InnoDB ENGINE”的数据库...... 我的解决方案是... 你必须有一个“MyISAM ENGINE”, 如何改变?...发现你的环境可能与

# find / -name my.cnf

在 LINUX 上,只需将以下行添加到

vim /etc/mysql/my.cnf 

添加:

default-storage-engine= MyISAM

然后重启mysql:

service mysql restart

【讨论】:

这行得通。非常感谢。但我没有在我的conf中改变它。仅在查询中添加

以上是关于MySQL 创建表错误 - 表不存在的主要内容,如果未能解决你的问题,请参考以下文章

创建表脚本语法错误“表不存在”

访问:如果表不存在则创建表

如果表不存在,如何使用 Derby Db 创建表

MySQL 仅在表不存在时插入数据

使用 sqitch 中的 mysql 查询验证表不存在

休眠表不存在错误