漏洞? #1146 - 表 'xxx.xxxxx' 不存在

Posted

技术标签:

【中文标题】漏洞? #1146 - 表 \'xxx.xxxxx\' 不存在【英文标题】:Bug? #1146 - Table 'xxx.xxxxx' doesn't exist漏洞? #1146 - 表 'xxx.xxxxx' 不存在 【发布时间】:2011-09-14 14:13:53 【问题描述】:

我使用的是 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 

可能是什么问题?

【问题讨论】:

尝试创建一列且没有主键/键/约束的简单表 @Ravi,我试过了,但没有帮助!这是代码:CREATE TABLE ddd.mwrevision` (nnn INT NOT NULL) ENGINE = INNODB;和同样的错误 for fire 查询 app/cmd/shell/browser/WB 使用什么? phpmyadmin,windows xp,chrome,我应该告诉其他任何事情吗? 您可以尝试删除反引号 (`) 吗? 【参考方案1】:

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

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

【讨论】:

我的问题与您相似,但有点不同,phpmyadmin 表下拉列表(显示在左侧)向我显示 11 个表,而右侧只有 10 个表可见,我不知道实际上是什么问题可能是 phpmyadmin 的错误或 mysql 的错误,但无论如何我很久以前就解决了这个问题,但是使用您指定的方法。所以将你的答案标记为选中:) 这里的关键部分似乎是最后一句话——重新创建你的数据库并重启mysql。【参考方案2】:

我遇到了同样的问题,无法通过网络获得有关此问题的好提示,因此我将其分享给您和所有需要的人。

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

我使用 Wamp 2.1 和 MySQL 版本 5.5.16。

我的解决方案:

    将数据库导出到文件;

    验证导出的文件是否真的OK!!;

    删除我有问题的数据库;

    创建一个与上一个名称相同的新数据库;

    将文件导入数据库。

对我来说问题已解决。现在我可以再次创建表而不会出错。

【讨论】:

通过复制 frm,myd myi 文件,您只复制了数据库模式。对于 INNODB 表,实际数据位于 ibdata1 文件中。如果您复制了 ibdata1ib_logfile? 文件,它会起作用。【参考方案3】:

重新启动 MySQL 对我来说很好。

【讨论】:

【参考方案4】:

在我的例子中,即使表格在 PhpMyAdmin 中不可见,我也运行了这个命令:

DROP TABLE mytable

然后

CREATE TABLE....

为我工作!

【讨论】:

这就是答案。【参考方案5】:

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

【讨论】:

文件名根本不重要。 @Shaheer 为你解决了,但其他人呢?【参考方案6】:

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

然后我尝试通过键入 DROP TABLE users 来删除该表,但我知道它会失败,因为它不存在,然后我收到一个错误,说 Unknown table users。收到此错误后,我再次尝试建表,神奇的是,建表成功!

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

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

【讨论】:

【参考方案9】:

正如上面 pprakash 提到的,复制 table.frm 文件ibdata1 文件对我有用。

简而言之:

    关闭您的 DB Explorer 客户端(例如 Workbench)。 停止 MySQL 服务(Windows 主机)。 制作几乎所有内容的安全副本! 将表文件(例如 mytable.frm)的副本保存到架构数据文件夹(例如 MySQL Server/data/yourschema)。 将 ibdata1 文件的副本保存到数据文件夹(即 MySQL Server/data)。 重启 MySQL 服务。 检查这些表现在是否可以在您的 DB Explorer 客户端中访问、查询等。

在那之后,一切都很好。 (成功了别忘了备份哦!)

【讨论】:

【参考方案10】:

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

【讨论】:

我认为这只是由于匿名化。 它没有用我尝试 sddd 为第二列名称,但仍然是相同的效果 @gumbo,匿名化?这是什么? 您是否创建了数据库/模式 ddd? @user503148:匿名化是使数据匿名的过程。这些数据库/表/行名称不是您实际使用的名称,是吗?【参考方案11】:

从 CMD 运行 & %path%=set 到 mysql/bin

mysql_upgrade -u user -ppassword

【讨论】:

确保您在本地主机上,这将尝试升级 我刚刚收到很多错误表'xxx.u8nxi_updates'不存在【参考方案12】:

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

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

希望这会有所帮助...

【讨论】:

【参考方案13】:

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

    删除models.py文件之一 更正对已删除文件的引用 然后运行 ​​manage.py syncdb

【讨论】:

【参考方案14】:

从另一个位置复制 mytable.idb 表文件后,我遇到了这个问题。为了解决这个问题,我做了以下事情:

ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;

复制 mytable.idb

ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;

重启MySql

【讨论】:

不起作用Error Code: 1146. Table 'wp_commentmeta' doesn't exist【参考方案15】:

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

【讨论】:

【参考方案16】:

我遇到了这个问题,因为触发器不工作。我删除触发器后工作。

【讨论】:

【参考方案17】:

在我的例子中,MySQL 的参数; lower_case_table_names 已配置为 = 0

这会导致与使用大写相关的查询不起作用。

【讨论】:

【参考方案18】:

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

奇怪的是,这个错误出现在一个有效的 sql 语句中。不知道是什么导致了这种区分大小写。也许是自动 AWS RDS 更新。

【讨论】:

【参考方案19】:

如果你正在修改 mysql bin->data dir's 之后,你的数据库导入将不起作用

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

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

【讨论】:

以上是关于漏洞? #1146 - 表 'xxx.xxxxx' 不存在的主要内容,如果未能解决你的问题,请参考以下文章

“1146 - 表‘表’不存在”

SSIS派生列问题

#1146 - 表 'phpmyadmin.pma__tracking' 不存在如何手动禁用?

未找到基表或视图:1146 表“epharmacy.medicines”不存在

未找到基表或视图:1146 表 'admin.model' 不存在

未找到基表或视图:1146 表 Laravel 5