【问题标题】:Unknown column in field list during select query after column deleted删除列后选择查询期间字段列表中的未知列
【发布时间】:2013-11-16 21:56:24
【问题描述】:

当我运行基本选择查询(不是插入或更新)时,我不断收到一条错误消息,告诉我字段列表中有一个未知列。

在某一时刻,错误所指的名称是一列,但我已经重组了数据库,并且该表中不再有该名称的列。

有趣的是,仅当我从 PHP 查询数据库时才会发生此错误。如果我直接在服务器上运行查询(使用 phpMyAdmin 中的 SQL 选项卡),我不会收到任何错误。

在我看来,某处有一个我不知道的缓存需要清除。有任何想法吗?

更新

关于使用框架的评论。我没有使用任何花哨的东西,只是基本的 PHP/MySQL。我收到错误的一个例子是

$query = "SELECT * FROM table";
$relation = mysql_query($query) or die(mysql_error());
return $relation;

即使运行测试查询也会返回字段列表中未知列的错误,这很奇怪,因为我实际上并不是在寻找特定的列,而只是尝试检索所有内容。我以前从未遇到过这个问题。当您尝试将某些内容插入到不存在的列(或更新列)中时,通常会出现未知列。

【问题讨论】:

  • 从未听说过!真的需要清除!
  • 当您说从PHP 查询时,我猜您使用的是框架。您可能需要通知您的框架您的元数据已被修改。
  • 我更新了一个例子
  • 该示例不会导致错误。找到引发错误的特定代码行并发布您收到的特定查询和错误消息。通常,此错误消息的含义与它所说的完全相同 - 您正在尝试访问一个不存在的列。
  • 这就是困难所在——我特意运行了一个 select * 查询来测试问题。它确实给了我这个错误。我试图查看除了引用特定列的查询之外,是否有其他原因可能会发生这种情况。对于这个问题,您还有其他可能的原因吗?

标签: php mysql sql


【解决方案1】:

根据您的服务器安装,mySQL 和 PHP 都可以配置为执行一些非常激进的缓存。尝试发送“重置查询缓存”命令。这指示 mySQL 清除其查询缓存。如果问题仍然存在,那么您可能正在查看缓存在 PHP 中的内容。

【讨论】:

  • PHP 中的什么地方会被缓存?我猜这与 PHP 在服务器上的实际设置方式有关?
  • 这不是查询缓存的问题。
猜你喜欢
  • 2023-02-01
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
相关资源
最近更新 更多