繁体   English   中英

SQLSTATE [HY000]:一般错误:20018 '=' 附近的语法不正确

[英]SQLSTATE[HY000]: General error: 20018 Incorrect syntax near '='

我正在处理的 Laravel 项目中出现了一个奇怪的错误。

SQLSTATE [HY000]:一般错误:20018 '=' 附近的语法不正确。 [20018](严重性 15)[(空)](SQL:更新 [plan_part] 设置 [is_corrosion_protection_required] = 0,[modified_date] = 2018-01-24 11:47:03 其中 [plan_part_id] = 131996)

它发生在我的测试服务器上,但在本地它正在运行。 测试服务器运行 PHP 7.1.10,本地主机是运行 7.0.10 的 WAMP。

我不明白为什么这会导致错误。 语法似乎是正确的。 我只是使用 Laravel 的 eloquent model 保存到数据库,我很确定这只是一个 PHP PDO 绑定参数语句。

奇怪的是,如果我调整is_corrosion_protection_required以外的其他属性,我可以在测试服务器上保存。 该属性是数据库中的一个bit属性。 我尝试将其更改为使用真/假、1/0、“1”/“0”和“是”/“否”,但它没有解决任何问题。

我在另一个位域上遇到了同样的问题,所以我认为这与此有关,但我不知道我需要做什么或从这里到 go 的位置。

希望有人能提供一些线索,说明我还可以尝试什么,或者我需要做什么才能在本地主机和测试服务器上运行。

我不认为更新更多的7.1版本是一个主要问题,但我对服务器管理了解不多。

经过许多小时的研究,我得出的结论是,我们的问题不是错误消息中概述的原始查询。

有与该表相关联的触发器,这些触发器可能是问题的根本原因。 我无法确定到底是什么引发了错误,但是我们的DBA审查了触发器并禁用了触发器,导致一切再次正常运行。

感谢您的所有评论和帮助我回顾自己的想法。

这个问题发生在服务器端而不是你的项目,你需要确保你已经完成并成功地在服务器上安装sqlsrvpdo_sqlsrv模块。

当您运行这些命令pecl install pdo_sqlsrvpecl install sqlsrv时,请确保该过程成功完成,并且您会在过程结束时看到此消息:

Build complete.
Don't forget to run 'make test'.

此问题是由字符集引起的!

execute [ iconv(); ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM