Laravel做MySQL数据操作时报错:SQLSTATE [HY000]: General error: 2036

1 篇文章 0 订阅
1 篇文章 0 订阅

今天在CentOS操作系统下搭建PHP环境,默认使用的是php-mysql的php数据库操作驱动,准备让Laravel项目跑起来时,没成功,在通过Laravel操作MySQL数据库时报错:SQLSTATE [HY000]: General error: 2036

解决方法有两种:
    1. 关闭laravel mysql的严格模式(config/database.php strict项),不过这样子会出现一个小小的问题,就是数据类型的约束不能在进行模型操作时抛出异常了,例如数据表中有content字段,数据类型varchar(191),通过Eleqount模型创建一条数据,如果content字段字符长度在插入时超过191,将不会再抛出异常了(并且strict模式被关闭后可能会带来一些其它的隐性问题),但是真实插入到MySQL的时候将会被截断成191

    2. 将php的mysql驱动从 php-mysql 更换为 php-mysqlnd (这是一个php扩展,用于操作数据库的驱动,可以用带代替php-mysql)

关于mysqlnd的介绍:(引用自:https://baike.baidu.com/item/mysqlnd?fr=aladdin

Mysql Native驱动(Mysql Native Driver 简称:mysqlnd )在PHP5.3.0版本中被引入。PHP5.4之后的版本mysqlnd被作为默认配置选项。 由zend 公司开发的MySQL数据库驱动,采用PHP开源协议(即 PHP license)避免了任何可能存在的版权问题。而旧的libmysql是有Mysql AB公司(现在的Oracle Corporation)开发,依照mysql license。它是新的函数库,libmysql有的功能它几乎都有,但是mysqlnd并不像libmysql那样作为通用库,它是专门为PHP而写的一个库,用了PHP的内在管理函数以及一些网络流的函数。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值