33

我正在使用 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 

可能是什么问题?

4

19 回答 19

30

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

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

于 2011-12-07T04:43:13.390 回答
11

我遇到了同样的问题,无法通过网络获得很好的提示,所以我为你和所有需要的人分享了这个。

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

我将 Wamp 2.1 与 MySQL 5.5.16 版本一起使用。

我的解决方案:

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

  2. 验证导出的文件是否真的没问题!!;

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

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

  5. 将文件导入数据库。

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

于 2012-01-24T06:30:19.850 回答
7

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

于 2014-11-02T18:24:35.723 回答
4

就我而言,即使该表在 PhpMyAdmin 中不可见,我也会运行此命令:

DROP TABLE mytable

然后

CREATE TABLE....

为我工作!

于 2015-05-21T09:22:52.523 回答
3

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

于 2012-11-21T15:23:22.223 回答
2

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

于 2013-05-10T11:10:09.623 回答
1

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

于 2013-06-12T11:57:57.970 回答
1

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

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

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

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

于 2015-04-06T17:51:28.513 回答
1

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

简而言之:

  1. 关闭您的数据库资源管理器客户端(例如 Workbench)。
  2. 停止 MySQL 服务(Windows 主机)。
  3. 制作几乎所有内容的安全副本!
  4. 将表文件(例如mytable.frm)的副本保存到模式数据文件夹(例如 MySQL Server/data/{yourschema})。
  5. 将ibdata1文件的副本保存到数据文件夹(即 MySQL Server/data)。
  6. 重启 MySQL 服务。
  7. 检查您的数据库资源管理器客户端中的表现在是否可访问、可查询等。

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

于 2016-08-17T23:46:51.617 回答
0

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

于 2011-06-14T10:32:29.547 回答
0

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

mysql_upgrade -u user -ppassword

于 2011-06-14T11:04:10.647 回答
0

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

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

希望这可以帮助...

于 2013-08-23T08:32:24.570 回答
0

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

  1. 删除 models.py 文件之一
  2. 更正对已删除文件的引用
  3. 然后运行 ​​manage.py syncdb
于 2013-11-11T07:02:04.247 回答
0

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

ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;

复制 mytable.idb

ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;

重启MySql

于 2014-04-13T20:34:09.843 回答
0

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

于 2014-10-31T22:51:53.193 回答
0

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

于 2016-08-02T12:21:41.240 回答
0

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

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

于 2017-08-09T06:25:59.143 回答
0

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

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

于 2018-03-16T15:43:24.337 回答
0

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

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

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

于 2021-01-15T19:03:38.353 回答