前言

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服务再尝试√


GeorgieのBlog,分享生活的点点滴滴,分享代码干货