创建表后表不存在

22

我正在尝试将这个SQL导入到我的数据库中,数据库名称为Symfony。

CREATE TABLE IF NOT EXISTS ingredient (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

并且我得到了。
#1146 - Table 'symfony.ingredient' doesn't exist

这似乎很奇怪,因为我在这里尝试创建这个表格,那么...为什么它不起作用呢? 如果我尝试相同的操作,我会遇到相同的问题。

CREATE TABLE symfony.ingredient

在Symfony2中的功能
c:\Dev\Symfony>php app/console doctrine:schema:create

PS:我只在新版本的xampp中遇到这个问题。

编辑

好吧,我设法解决了我的问题。 我删除了我的数据库,然后创建了一个(不是通过界面),最后重新启动了mysql服务。 我不知道为什么和如何解决这个问题,但我希望这能帮助到某些人。


1
同意。我不得不删除数据库,重新启动mysql服务器,然后重新创建一切,这样就可以正常工作了。谢谢。 - Jim Crozier
谢谢大家,"在创建表之后表不存在"这个问题让我疯狂了! - Adrien LAMOTTE
7个回答

20

我曾遇到过同样的问题。 我的解决方法是: 在创建表查询中更改表名,执行该查询,然后将表重命名。

接着,您还可以删除此表,并在没有错误的情况下重新创建它。


5
这对我没有起作用。当我试图将另一个表重命名为我想要的名称时,出现了已存在表的错误。 - Mike
很奇怪,但这个方法确实有效:在创建语句中更改名称,然后在表成功创建后将其重命名回原本应该是的名称。有人能解释一下这里到底发生了什么吗? - Souvik Ghosh

11

适用于我的方法是:

  • 前往文件夹 xampp/mysql/data/database-name/
  • 您将只看到.frm文件。对于空表,缺少 .MYD.MYI 文件。
  • 删除.frm文件。
  • 停止MySQL进程并重新启动它。
  • 之后,我能够创建表格了。

xampp的旧版本使用MyISAM格式创建表格,新版本使用InnoDB!


1
在Ubuntu上,文件位于/var/lib/mysql/[database-name]。 - Meetai.com
是的!这对我也起作用了。只需记住通常需要删除<XAMPP根文件夹>/xamppfiles/var/mysql/<database_name>/<table_name>.*文件。 - narasi

2

我曾经遇到过同样的问题。在创建表时,我收到了一个“服务器已关闭”的消息,之后我收到了“表不存在”的消息,但是我无法尝试重新创建该表,因为随后我又收到了一个消息,说它确实存在。我通过在命令行中执行以下操作解决了这个问题:

mysqlcheck --repair --all-databases -u root -p

在此之后重启mysql服务器也是一个不错的选择,以防万一。

@aowie1,实际上,它可以与InnoDB一起使用,但是我的服务器上发生的任何事情可能与您的不同。甚至手册也谈到了InnoDB表。 - Mike

0

进入phpadmin中的数据库,在sql中删除表。然后创建表。


0
我遇到了相同的问题:#1146-表格'tutsplus_ci.posts'不存在。我按照以下步骤解决了这个问题:
我将受影响的表格导出到 SQL 文件中。我注意到.sql 文件中的表格名称有一个额外的尾随空格。 在我的表格的操作部分中切换回 phpMyAdmin,并将表格从' posts'重命名为'posts'。执行所有这些操作后,错误未再显示。
总之,确实如错误消息所说,表格“posts”不存在。因为表格的实际名称是“ posts”,而不是“posts”。在 phpMyAdmin 中很难注意到名称前面的空格。这就是故事发生的全过程。没有什么特别的。 希望能对你有所帮助!

0

嗯,你确定你有数据库并且有权限执行CREATE语句吗?

如果你有phpmyadmin:

为了测试第一种可能性,创建一个新的(空的)测试数据库,在菜单中点击它,然后在顶部导航栏中按下SQL按钮,再次复制粘贴你的语句。如果这不起作用,请尝试第二种方法。

对于第二种方法,您可以点击“主页”按钮,然后转到“特权”。如果只有两个或三个帐户,但都具有root权限,则具有执行CREATE的权限。否则,您可以检查您的帐户并赋予自己权限。

如果两种可能性都没有成功,我也不知道原因。它对我来说很好用 :(


很遗憾,我以root用户身份登录,并使用Phpmyadmin测试我的查询语句。真正奇怪的是CREATE TABLE symfony_ingredient实际上是有效的,但这不是我想要的。我认为前缀出了些问题。 - Julien G
啊,那我恐怕无法帮助您了,因为我无法重现错误,也看不到任何可能引起它的东西。祝你好运 :) - Tessmore

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接