3

我对这个问题进行了研究,到目前为止,我在 MySQL 手册、MySQL 错误报告、Stack Overflow 或其他论坛中读到的任何内容都没有帮助。

我有一个简单的 mysql 选择查询:

SELECT * FROM `Toyota` WHERE `Toyota`.`CollisionEstimatingID` = '22028589';

此查询失败,mysql 错误代码 1054

子句Toyota.CollisionEstimatingID中的未知列WHERE

此列确实存在,我已经检查了数据库、表和列的拼写至少 30 次。我什至删除了我的数据库并重新导入。我试过用反引号和不带反引号,有别名和没有别名'我试过用显式命名的 table.column 语法,没有显式语法,我试过混合和匹配我所有的东西提到(表上的反引号,而不是列上的反引号,列上的但不是表名),似乎没有任何效果。当我从 Ubuntu 12.04 上的 mysql CLI 执行它时它失败了,它从我的 PHP 5.3 代码中失败了,它在 phpMyAdmin 内部失败了。我准备翻转桌子。

当我尝试这个时:

SELECT * FROM `Toyota`;

这工作没有任何问题?天哪,MySQL真是个逗比……

这是源自于的表设置show create database Toyota;

CREATE TABLE `Toyota` (
  `CollisionEstimatingID` varchar(255) DEFAULT NULL,
  `OE_part_number` varchar(255) DEFAULT NULL,
  `Price` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1

一个有趣的注释——我想知道它是否可能是字符编码问题?show create table Toyota通过使用并删除除“CollisionEstimatingID”之外的所有内容,我确实让它在 phpMyAdmin 中工作一次,并使用它来形成 SELECT 语句。但是当我尝试剪切和粘贴时,没有骰子。

我尝试使用 utf8 字符集重新创建数据库和表,看看是否有帮助,但没有帮助。我尝试将文本从 phpMyAdmin 窗口复制到我的源代码中——在列名的开头产生了一些时髦的字符——有点像这样:>>?CollisionEstimatingID只是它是一个带有变音符号的“i”+一个双右 V 形和一个颠倒的问号。

我难住了。有人想测试他们的编程勇气并帮助兄弟吗?

4

2 回答 2

2

像“”?

这是 UTF-8 BOM (en.wikipedia.org/wiki/Byte_order_mark)。

您可能需要先清理输入文件。

于 2013-04-12T08:50:05.740 回答
0

您的代码没有任何问题,因为我已经对我的 SQL Server 进行了一些测试。可以试试这个

SELECT * FROM Toyota WHERE Toyota.CollisionEstimatingID = '22028589'
于 2013-04-12T08:56:06.563 回答