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
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《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年前 评论