【发布时间】:2013-11-04 07:43:29
【问题描述】:
当我执行SELECT * FROM table 时,返回的行集不包含表中的所有列。它不包含最近添加的列。不过,phpMyAdmin 中的structure 选项卡显示了新列。如果我像SELECT new_column_name FROM table 一样直接查询,也会出现列值。
如果我通过 PHP 或 phpMyAdmin 查询表,则会出现此问题。
很有趣,如果我运行SELECT *, new_column_name FROM table,new_column_name 的值就会重复。
这种奇怪行为的原因是什么?如何恢复使用* 显示所有列的默认行为?
更新: 我已经刷新了表缓存并重新启动了 mysql 服务器,但没有任何变化。
更新: 存储引擎是 InnoDB
更新:
在添加新列之前,我将列标题拖放到另一个位置以切换列的位置。但是加完列后,我点了restore column order,所以应该没有什么影响……
更新: 如果我通过命令行运行查询,检查返回的内容后,我现在看到问题实际上只出在 phpMyAdmin 上(命令行返回新列等)。仔细检查我在 PHP 中所做的事情表明我明确选择了特定的列。 所以,现在问题只存在于 phpMyAdmin 中。 它可能有什么问题?
【问题讨论】:
-
也许是一些(mysql)缓存?
-
我已经刷新了表缓存,但没有任何变化。
-
@davey:那是我的猜测,
*查询数据库中包含的列。元数据可能尚未更新。 -
您是在添加列并在同一个连接对象上执行 select * 查询吗?
-
你的存储引擎是什么?如果您尝试在
mysql命令行客户端中查询您的表怎么办?
标签: mysql phpmyadmin