我使用的是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
可能是什么问题?
答案 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。
我的解决方案:
将数据库导出到文件;
验证导出的文件是否正常!!;
删除我遇到问题的数据库;
创建一个与最后一个名称相同的新数据库;
将文件导入数据库。
为我解决了问题。现在我可以再次创建表而不会出错。
答案 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要求意味着我必须提供一个解决方案,即使它只是现有的一个改进......很奇怪。)
简而言之:
之后,一切都很顺利。 (如果你成功了,别忘了备份!)
答案 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)
对我而言,这是一个表名大写/小写问题。我必须确保在删除查询中匹配表格案例名称,表格notifications
与Notifications
不同。我通过将表名称与查询匹配以及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”文件,其中包含的字段略有不同。 我通过以下方式解决了这个问题:
答案 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