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  ·  5年前

@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 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 6

car_clue_discuss.car_clue_id 这个错了

6年前 评论
JeffreyBool

@helloBear 不是sql语句的问题

6年前 评论

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

5年前 评论
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 即可

5年前 评论

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

5年前 评论

@kenuo 额,我了解了,谢谢

5年前 评论

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