前言
Laravel使用Mysql错误:SQLSTATE[42000]: Syntax error or access violation: 1055
介绍:
mysql5.0以上版本支持三种sql_mode模式:
- ANSI模式
宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。 - TRADITIONAL模式
严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。用于事物时,会进行事物的回滚。 - STRICT_TRANS_TABLES模式
严格模式,进行数据的严格校验,错误数据不能插入,报error错误。
解决:
1、由于Laravel默认开启mysql的严格模式,如在查询中进行汇总或者group by 字段不在select中就会报错
可将配置文件中的strict设为false即可 (config/database.php) 记得清理一下config缓存再尝试√
2、如果上述方法还是不行可尝试修改mysql的配置文件,my.cnf
文件添加 sql_mode=""
然后保存重启mysql服务再尝试√
Comments | NOTHING