mysql与information_schema.tables有关

时间:2010-07-02 22:45:24

标签: mysql sql

-edit2- 3小时后仍然有同样的问题。我正在使用noinstall存档包。 -edit-也许有人可以告诉我一个更好的方法来检查一个表是否存在?

我在我的lib中有一个函数来检查是否存在一个我过去问过该怎么做的表。

我删除了我的数据库并再次创建了它。我的代码没有正确创建表。调试后我决定写下面的内容。

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)

2 个答案:

答案 0 :(得分:6)

您似乎需要使用FLUSH TABLES命令对INFORMATION_SCHEMA.TABLES反映现有表。

参考:

答案 1 :(得分:0)

嗯... 结果稳定吗?可能是一些未决的交易..

显示的是什么
show tables like '%'

此外,它可能是物理文件的问题。 是否存在mydb的文件夹?