我对这个问题进行了研究,到目前为止,我在 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 形和一个颠倒的问号。
我难住了。有人想测试他们的编程勇气并帮助兄弟吗?