MySQL 8.0.12 Windows 64位
我正在尝试设置一个SQL查询,以便通过任何匹配的邮政编码搜索我的数据库,目前我遇到了一个问题。我可以使用列名"postcode“进行选择,但是当我将它输入WHERE子句时,"postcode = 4000”MySQL告诉我列是未知的。
当我试图搜索这个问题的解决方案时(因为这个错误消息非常常见),我遇到了三种主要类型的典型解决方案。使用或不使用回勾取决于您的列名中是否有空格等,而不完全依赖于查询的执行顺序导致的别名,并确保其他标点符号(如引号)不会混淆查询执行器。我已经尝试过用或不带后座,而且我目前不依赖任何别名,但我已经尝试使用不同顺序的别名,以确定它是否有效,我还删除了任何其他典型的可疑标点符号,但到目前为止都没有起作用。
用于创建表的查询如下.
CREATE TABLE `postcodes` (
`?postcode` int(11) DEFAULT NULL,
`locality` text,
`State` text,
`long` double DEFAULT NULL,
`lat` double DEFAULT NULL,
`id` int(11) DEFAULT NULL,
`dc` text,
`type` text,
`status` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci我希望运行的查询是这样的..。
SELECT postcode FROM au_locations.postcodes WHERE postcode = 4000;...and我尝试过这个查询的修改.
SELECT `postcode` FROM `au_locations`.`postcodes` WHERE `postcode` = 4000;
SELECT postcode FROM au_locations.postcodes WHERE au_locations.postcode = 4000;...and最让我困惑的是,这个查询本身完全正常,但是第二天我运行它,它不再工作了.
SELECT postcode FROM au_locations.postcodes;我遇到的错误被定义为.
错误代码: 1054。“where子句”中未知列“邮政编码”
使用此查询后,我希望只输出值"4000“和标题"postcode”的单个列单行表。有什么重要的标识符或其他代码是我目前遗漏的吗?
注意:数据库上似乎没有激活的触发器或其他参数,任何使用上面提供的CREATE定义在另一个数据库中重构表的尝试都会产生相同的结果。该表最初是从CSV文件生成的,从所有外观来看,CSV文件似乎都得到了正确的实现,只有当我询问邮政编码出现在哪里时,才会出现任何错误(其他所有列都正常工作)。
发布于 2019-06-23 05:12:27
由于所有的评论和进步(讨论,可以在这个聊天上看到)提供的帮助,问题已经解决。
通过在MySQL客户端上运行SHOW表,我能够发现一个可能没有在字段名"postcode“中正确编码的额外字符,因此当我运行与”邮政编码“字段有关的查询时,会混淆MySQL。这可能是一个与行提要字符和其他在操作系统之间的操作稍有不同的字符有关的错误,但我目前还没有特别的证据来支持这一理论(如果我找到原因的话,将添加到评论中)。
要在Windows上找到MySQL客户端,可以在Windows栏中搜索" MySQL“,也可以打开命令提示符并导航到MySQL文件夹所在的位置(很可能是C:\Program \ mysql ),根据您的mysql版本,需要在不同的文件夹中运行mysql命令。关于运行mysql命令以打开客户机的进一步文档可以在这里找到。
在发现此错误的原因后,我重新键入了NotePad++中CSV文件列的标题,以确保没有额外的隐藏字符,并将我的CSV文件重新导入到现在工作的MySQL中。
https://stackoverflow.com/questions/56703693
复制相似问题