错误? #1146 - 表'xxx.xxxxx'不存在

时间:2011-06-14 10:29:51

标签: mysql phpmyadmin mysql-error-1146

我使用的是Windows XP。我正在使用内置的创建表功能在phpMyAdmin中创建一个表, 我的数据库名称是ddd

它生成以下代码:

CREATE TABLE  `ddd`.`mwrevision` (

`asd` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`sddd` INT NOT NULL
) ENGINE = INNODB;

并显示以下错误:

MySQL said:     
#1146 - Table 'ddd.mwrevision' doesn't exist 

可能是什么问题?

19 个答案:

答案 0 :(得分:27)

我过去也遇到过同样的问题。在将数据库文件移动到新位置并更新mysql服务器之后,所有这些都发生了。所有带有InnoDB引擎的表都从我的数据库中消失了。我试图重新创建它们,但mysql一直告诉我1146: Table 'xxx' doesn't exist,直到我重新创建了我的数据库并重新启动了mysql服务。

我认为有必要阅读InnoDB表二进制文件。

答案 1 :(得分:11)

我遇到了同样的问题,无法在网上得到一个好的提示,所以我为你和所有需要的人分享了这个。

在我的情况下,我将数据库(所有文件:frm,myd)复制到MySQL数据文件夹中的数据文件夹(使用家中的Wamp)。所有事情都没问题,直到我想创建一个表并且出现错误#1146 Table '...' doesn't exist!

我使用Wamp 2.1和MySQL 5.5.16。

我的解决方案:

  1. 将数据库导出到文件;

  2. 验证导出的文件是否正常!!;

  3. 删除我遇到问题的数据库;

  4. 创建一个与最后一个名称相同的新数据库;

  5. 将文件导入数据库。

  6. 为我解决了问题。现在我可以再次创建表而不会出错。

答案 2 :(得分:5)

重启MySQL对我来说很好。

答案 3 :(得分:4)

在我的情况下,即使表格在PhpMyAdmin中不可见,我也会运行此命令:

DROP TABLE mytable

然后

CREATE TABLE....

为我工作!

答案 4 :(得分:3)

检查文件名。
您可能需要在phpmyadmin中创建一个与您尝试导入的数据库匹配的新数据库

答案 5 :(得分:3)

我遇到了同样的问题。我试图在mysql中创建一个表并得到相同的错误。我重新启动了mysql服务器并运行了命令,并且能够在重新创建后创建/迁移表。

答案 6 :(得分:1)

今天我遇到了同样的问题。我处于非常困难的情况但是我创建了一个具有不同名称的表,例如(modulemaster没有创建然后我创建modulemaster1)并且在创建表之后我只是执行重命名表。

答案 7 :(得分:1)

如上所述 pprakash ,复制 table.frm文件 ibdata1 文件对我有用。 (我本来只是对这个评论发表了评论,但这个50分的SO要求意味着我必须提供一个解决方案,即使它只是现有的一个改进......很奇怪。)

简而言之:

  1. 关闭数据库资源管理器客户端强调文本(例如Workbench)。
  2. 停止MySQL服务(Windows主机)。
  3. 制作几乎所有东西的安全副本!
  4. 将表格文件的副本(例如 mytable.frm )保存到架构数据文件夹(例如MySQL Server / data / {yourschema})。
  5. ibdata1 文件的副本保存到数据文件夹(即MySQL服务器/数据)。
  6. 重启MySQL服务。
  7. 检查数据库资源管理器客户端中的表现在是否可访问,可查询等。
  8. 之后,一切都很顺利。 (如果你成功了,别忘了备份!)

答案 8 :(得分:1)

我今天遇到了同样的问题。我试图创建一个表users,并提示ERROR 1146 (42S02): Table users doesn't exist,这没有任何意义,因为我只是想创建表!!

然后我尝试通过键入DROP TABLE users来删除表,知道它会因为它不存在而失败,我收到错误,说Unknown table users。在收到此错误后,我尝试再次创建表,并且奇迹般地,它成功创建了表!

我的直觉是我之前可能创建了这个表,但它并没有完全清除。通过明确地说DROP TABLE我设法以某种方式重置内部状态?但这只是我的猜测。

简而言之,尝试DROP您正在创建的任何表,并再次创建它。

答案 9 :(得分:0)

从其他位置复制mytable.idb表文件后出现此问题。为了解决这个问题,我做了以下几点:

ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;

复制mytable.idb

ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;

重启MySql

答案 10 :(得分:0)

如果您正在修改 mysql bin->data 目录,然后,您的数据库导入将不起作用

所以你需要关闭wamp,然后启动wamp

现在数据库导入可以正常工作

答案 11 :(得分:0)

对我而言,这是一个表名大写/小写问题。我必须确保在删除查询中匹配表格案例名称,表格notificationsNotifications不同。我通过将表名称与查询匹配以及MySQLWorkbench报告的内容来修复它。

奇怪的是,这个错误出现在一个有效的sql语句中。不知道是什么导致了这种情况的敏感性。也许是自动AWS RDS更新。

答案 12 :(得分:0)

就我而言,MySQL的参数; lower_case_table_names已配置= 0

它导致与使用大写相关的查询无效。

答案 13 :(得分:0)

由于触发器无法正常工作,我遇到了这个问题。在删除触发器后工作。

答案 14 :(得分:0)

我有同样的问题。它发生在Windows启动错误后,似乎有些文件因此而损坏。我确实从保存的脚本中再次导入了DB,它工作正常。

答案 15 :(得分:0)

列名在表中必须是唯一的。您不能在同一个表中有两列名为asd的列。

答案 16 :(得分:0)

我之所以遇到这种情况,是因为我有两个“models.py”文件,其中包含的字段略有不同。 我通过以下方式解决了这个问题:

  1. 删除其中一个models.py文件
  2. 更正对已删除文件的引用
  3. 然后运行manage.py syncdb

答案 17 :(得分:0)

最近我遇到了同样的问题,但在Linux Server上。数据库崩溃了,我基于简单地复制/var/lib/mysql/*(wamp中的模拟mysql DATA文件夹)从备份中恢复了它。恢复后我不得不创建新表并得到mysql错误#1146。我试图重启mysql,它说它无法启动。我检查了mysql日志,发现mysql根本没有对其DB文件的访问权限。我检查了/ var / lib / mysql / *的所有者信息,得到'myuser:myuser'(myuser是我)。但它应该是'mysql:adm'(自己的开发者机器也是如此),所以我将所有者更改为'mysql:adm'。在这个mysql正常启动之后,我可以创建表,或者做任何其他操作。

因此,在移动数据库文件或从备份恢复后,请检查mysql的访问权限。

希望这会有所帮助......

答案 18 :(得分:0)

从CMD& %path%=设置为mysql / bin

mysql_upgrade -u user -ppassword