【MySQL】解决报错 SQLSTATE [HY000]: General error: 2036错误 ....

这个报错大概是这样子的: SQLSTATE [HY000]: General error: 2036错误 .... 后面会跟着所使用的原语句。

1. 有两种情况,一种是网上搜到的普遍解答,就是语句本身被 SQL 解释器认为有问题,过不去“严格模式”

这种可以尝试在 DB 连接配置里加一行声明,关闭严格模式:

'mysql' => [

    /* ... */
    'strict'   => false,

],

2. 另一种情况,也就是我自己所碰到的。假如关闭“严格模式”仍然报错,考虑要查的表里是否加入了 JSON 型字段。

注意,JSON 型字段是 MySQL 5.7+ 才有的特性,也只有高版本的 MySQL 才支持 JSON 查询。但使用了 JSON 字段后,

对于 PHP 的 mysql  驱动就有要求了,所以有两种解决办法

方法一,更换 php 的mysql 驱动为 mysqlnd

假如我们用的是 CentOS 的服务器,php 版本 7.3

yum remove php73w-mysql

yum install php73w-mysqlnd

service nginx restart  #重启 web 服务器

service php-fpm restart    # 或者 apache

方法二,在 DB 连接配置里加一行特殊声明


'mysql' => [

    /* ... */
    'options'   => [PDO::ATTR_EMULATE_PREPARES => true]

],

实测这两种方法都能解决问题。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«   2020年10月   »
1234
567891011
12131415161718
19202122232425
262728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

    Powered By Z-BlogPHP 1.5.2 Zero

    Copyright liuyang1.com. 转载文章,请注明出处。谢谢!