MySQL 报错 SQLSTATE [HY000]: General error: 2036 怎么解决

SQLSTATE[HY000]: General error: 2036 (SQL: select * from car_clue_discuss where car_clue_discuss.car_clue_id in (5, 6, 7, 8) order by created_at desc)

上面的语句MySQL报错.不知道怎么解决了

by JeffreyBool blog :point_right: link
附言 1  ·  6年前

@Apodabird 用不着,改下配置就好了.关闭 mysql 严格模式就行了,这是因为 mysql 5.7 默认严格模式

<?php
.
.
.

 'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
            'timezone'  => env('DB_TIMEZONE', '+00:00'),
        ],

只要把 strict 的值变为false 即可

JeffreyBool
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6

car_clue_discuss.car_clue_id 这个错了

7年前 评论
JeffreyBool

@helloBear 不是sql语句的问题

7年前 评论

今天也遇到了这样的错误,我将php的mysql驱动(php-mysql)卸载换成了php-mysqlnd(Mysql Native Driver)解决的

6年前 评论
JeffreyBool

@Apodabird 用不着,改下配置就好了.关闭 mysql 严格模式就行了,这是因为 mysql 5.7 默认严格模式

<?php
.
.
.

 'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
            'timezone'  => env('DB_TIMEZONE', '+00:00'),
        ],

只要把 strict 的值变为false 即可

6年前 评论

@kenuo 我试了下,可以,不过关闭严格模式这样子使用Eleqount模型创建一条数据时,mysql字段的数据类型长度约束不起作用了。
例如表中有一个content字段,数据类型varchar(191),关闭严格模式后再次插入可以超出191字符这个限制(也就是不会抛出异常),但是数据库插入的content被截断成191了

6年前 评论

@kenuo 额,我了解了,谢谢

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!