1. 程式人生 > >Laravel做MySQL資料操作時報錯:SQLSTATE [HY000]: General error: 2036

Laravel做MySQL資料操作時報錯:SQLSTATE [HY000]: General error: 2036

今天在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的內在管理函式以及一些網路流的函式。