当查询中没有别名时,MySQL 错误“先前找到了别名”
Posted
技术标签:
【中文标题】当查询中没有别名时,MySQL 错误“先前找到了别名”【英文标题】:MySQL error "An alias was previously found" when an alias isn't in the query 【发布时间】:2018-01-20 07:46:25 【问题描述】:我在尝试对数据库执行更新时遇到了一个非常奇怪的错误。这是在使用 mysql 5.7.19-0ubuntu0.16.04.1 的 Ubuntu 16.04 服务器上。查询是:
更新athlet_teamseason
SET offkeyreturners
= 'test' WHERE athlet_teamseason
.id
= 29701;
MySQL 错误是:
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'offkeyreturners
= 'test' WHERE athlet_teamseason
.id
= 29701' 附近使用正确的语法
我在 phpMyAdmin 中执行此操作,它提供了更多信息:
在分析过程中发现了 2 个错误。
之前找到了一个别名。 (在位置 50 的 " " 附近) 之前发现了一个别名。 (在位置 51 的“'test'”附近)
如果我直接在 phpMyAdmin 用户界面中尝试此更新(搜索记录、编辑字段值、提交表单)它可以工作,并且显示的查询是:
更新athlet_teamseason
SET offkeyreturners
= '测试' WHERE athlet_teamseason
.id
= 29701;
这似乎是相同的。但是,如果我在两者之间进行字符串比较,我会得到:
因此,虽然它们看起来相同,但在某处却有所不同。
查询是从数据库中的表创建的,使用连接和引用源表中的单元格。例如:
="UPDATE athlet_teamseason
SET offkeyreturners
= '"&data!I2&"' WHERE athlet_teamseason
.id
= "&data!A2&";"
我有成千上万个,它们都产生相同的错误。我已经在旧服务器上做了几十次,可能是 MySQL 5.7 的问题?
【问题讨论】:
我猜你的字段中有一些非打印字符。 谢谢,我也想到了。我用光标键在文本上移动,看看是否能检测到任何内容,但没有运气。 光标键不一定对非空白字符有帮助;您通常可以通过 LENGTH 函数查找您知道自己遇到问题的值的差异,从而获得更好的结果;或者你可能对正则表达式有一些运气。 谢谢,我手动重新输入了我的模板查询,现在它可以工作了。 【参考方案1】:感谢 Uueerdo,我在查询中消除了非打印字符。
【讨论】:
您可能想展示在您的情况下如何将它们过滤掉,以便对其他人有用。 我放弃了寻找它们。我只是手动重新输入了查询,没有从我的示例查询中复制/粘贴。以上是关于当查询中没有别名时,MySQL 错误“先前找到了别名”的主要内容,如果未能解决你的问题,请参考以下文章
错误代码:1248。每个派生表都必须有自己的别名 没有找到查询的解决方案
在 MySQL 查询的 WHERE 子句中使用列别名会产生错误