laravel中SQLSTATE[HY000]: General error: 2036

一、問題:

laravel5.5中

static::find($id);

報錯
SQLSTATE[HY000]: General error: 2036 (SQL: select * from `…)

可以肯定的是,sql是正確的。那問題出在哪裏。

二、 解決

找到了三種解決辦法。

1、關閉laravel mysql的嚴格模式(config/database.php strict項)

不過這樣子會出現一個小小的問題,就是數據類型的約束不能在進行模型操作時拋出異常了,例如數據表中有content字段,數據類型varchar(32),通過Eleqount模型創建一條數據,如果content字段字符長度在插入時超過32,將不會再拋出異常了,但是真實插入到MySQL的時候將會被截斷成32

2、將php的mysql驅動從 php-mysql 更換爲 php-mysqlnd

(這是一個php擴展,用於操作數據庫的驅動,可以用帶代替php-mysql)

3、在config/database.php添加PDO::ATTR_EMULATE_PREPARES => true

'mysql' => [
    /* ... */
    'options'   => [PDO::ATTR_EMULATE_PREPARES => true]
],

但是我自己測,第一種方法不管用。第二種略顯麻煩。所以找到了第三種。採用了第三種。

It’s ok.

發佈了63 篇原創文章 · 獲贊 24 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章