20

我正在尝试在我的数据库名称 symfony 中导入这个 sql

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

或者 symfony 2 中的特性

c:\Dev\Symfony>php app/console doctrine:schema:create

PS:我只有新版本的xampp才有这个问题。

编辑

好吧,我以某种方式设法解决了我的问题。我删除了我的数据库,然后创建了一个(不是使用界面),最后我重新启动了 mysql 服务。我不知道为什么以及如何让我感到困惑,但我希望这会对某人有所帮助。

4

7 回答 7

19

I had the same problem. My solution: Change table name in the create table query, exequte it and then rename the table.

Then, you can also drop this table and after it create it without getting error.

于 2012-06-07T04:15:48.973 回答
11

对我有用的是:

  • 转到文件夹 xampp/mysql/data/database-name/
  • 您只会看到该.frm文件。空表的文件.MYD.MYI缺失。
  • 删除.frm文件。
  • 停止 MySQL 进程并重新启动它。
  • 之后,我能够创建表。

旧版本的 xampp 以 MyISAM 格式创建表,新版本为 InnoDB!

于 2012-07-14T11:53:41.070 回答
2

我有同样的问题。创建表时我收到“服务器已离开”消息,之后我收到表不存在消息,但我无法尝试重新创建表,因为随后我收到一条消息说它确实存在。我通过在命令行执行它来解决它:

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

在此之后重新启动 mysql 服务器也没有什么坏处,以防万一。

于 2015-03-29T01:51:53.677 回答
0

我遇到了同样的问题:#1146 - 表 'tutsplus_ci.posts' 不存在。我按照以下步骤解决了这个问题:

我在 sql 文件中导出了犯罪表。我注意到 .sql 文件中的表名有一个补充的尾随空格。我在表的操作部分切换回 phpmyadmin,并将表从“帖子”重命名为“帖子”。采取所有这些措施后,错误没有出现。

总而言之,确实如错误消息所述,表“帖子”不存在。因为表的实际名称是“posts”而不是“posts”。在 phpmyadmin 中很难注意到名称前的空格。这就是故事。没什么特别的。我希望它有帮助!

于 2015-01-08T09:11:04.683 回答
0

嗯,你确定你有一个数据库并且有权执行 CREATE 语句。

如果你有 phpmyadmin:

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

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

如果这两种可能性都没有解决,我也不知道。它对我来说很好:(

于 2011-11-15T20:13:26.417 回答
0

转到 phpadmin 中的数据库并在 sql 中删除表。然后创建表。

于 2020-01-17T11:41:35.037 回答
0

可能在 win 和 mac 中使用不区分大小写的 fs

lower_case_table_names=1

参考https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_lower_case_table_names

于 2021-12-24T06:58:12.620 回答