-编辑2-3小时后,仍然有同样的问题。我正在使用noinstall存档包。
编辑-也许有人能告诉我一个更好的方法来检查表是否存在。
我有一个函数来检查表是否存在,我曾经问过该怎么做。
我删除了我的数据库并重新创建了它。我的代码没有正确地创建表。在调试之后,我决定写下以下内容。

mysql> SELECT table_schema, table_name FROM information_schema.tables WHERE tabl
e_schema = 'mydb' AND table_name='ApprovePost';
+--------------+-------------+
| table_schema | table_name  |
+--------------+-------------+
| mydb         | ApprovePost |
+--------------+-------------+
1 row in set (0.00 sec)

奇怪的。。。mydb被删除并重新创建(我写了drop database mydb;create database mydb;。它应该消失了?)让我们找出什么存在
mysql> SELECT table_schema, table_name FROM information_schema.tables WHERE tabl
e_schema = 'mydb';
Empty set (0.00 sec)

我不仅不知道为什么第一条语句显示的表破坏了我的代码,我也不知道为什么它没有显示任何表(在数据库中)。
注意:数据库应该都是innodb。此外,这是一个新的windows安装,我可能配置了一些错误。
额外的怪异。
mysql> drop database mydb;
ERROR 1008 (HY000): Can't drop database 'mydb'; database doesn't exist
mysql> SELECT table_schema, table_name FROM information_schema.tables WHERE tabl
e_schema = 'mydb';
Empty set (0.00 sec)

mysql> SELECT table_schema, table_name FROM information_schema.tables WHERE tabl
e_schema = 'mydb' AND table_name='ApprovePost';
+--------------+-------------+
| table_schema | table_name  |
+--------------+-------------+
| mydb         | ApprovePost |
+--------------+-------------+
1 row in set (0.00 sec)

最佳答案

看来,您需要使用“信息”模式的表的FLUSH TABLES命令来反映现有表。
参考:
TABLE CACHE

关于mysql - MySQL的信息_schema.tables麻烦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3169525/

10-16 09:00