問題描述:在mysql資料庫下,執行sql插入語句報錯。錯誤資訊如下:
錯誤原因:
在mysql5.7之後,sql_mode中預設存在only_full_group_by,sql語句未通過only_full_group_by語義檢查所以報錯。
only_full_group_by:only_full_group_by要求select語句中查詢出來的列必須是明確的(其他語句也是一樣)。
以sql語句select columes from table group by list為例:columns必須是聚集函式或者在group by後的表示式list中,並且list中必須包含主鍵,否則也會報錯。
insert、update、delete語句都會報錯(但不影響sql語句的執行),因為這三種語句執行之前也會執行查詢操作。
以主鍵為id的表為例:
select count(1) from customer group by `name`;該sql執行成功,因為count是聚集函式;
select * from customer group by `name`;該sql執行失敗,因為*中包含主鍵id,而group by後的表示式中並沒有包含id
select name from customer group by `name`;該sql執行成功,因為name包含在group by後的表示式中
select name, contact from customer group by `name`;該sql執行失敗,因為contact沒有包含在group by後的表示式中
解決方案:一、永久解決1、在mysql下執行select @@sql_mode語句
2、將查詢結果中的only_full_group_by去掉然後複製,開啟mysql的配置檔案,將sql_mode的值設定為複製的值(若沒有sql_mode在[mysqld]下方新增一行即可)。
mysql配置檔案所在位置:
安裝版可通過windows服務所對應mysql啟動項,檢視其對應屬性->可執行檔案路徑,獲取my.ini路徑。
免安裝版一般在其根目錄下。(預設是my-default.ini,必須將名字改為my.ini才能生效)
3、重新mysql服務即可生效
sudo service mysql restart
二、只在當前會話中解決,重新進入mysql後失效1、在mysql下執行select @@sql_mode語句
2、將查詢結果中的only_full_group_by去掉然後複製,然後執行set sql_mode = '修改後的值'
三、只在當前服務中解決,重新mysql服務後失效
1、解決方式同方法二,只是在select和set時新增global關鍵字
解決mysql中錯誤1055問題
今天執行sql語句發現了這個錯誤,然後他就像蟑螂一樣頻繁出現在我的sql中,雖然不影響sql語句的執行,但是他真的很煩人。解決辦法 一勞永逸的辦法就是將sql mode中的only full group by刪除。首先找到mysql的配置檔案,找到sql mode,將其only full group...
MySQL 錯誤1055 永久解決方案
問題描述 在mysql資料庫下,執行sql插入語句報錯或者進入資料庫時。出現1055錯誤資訊。錯誤原因 在mysql5.7之後,sql mode中預設存在only full group by,sql語句未通過only full group by語義檢查所以報錯。only full group by ...
力扣184題,MySQL錯誤1055
問題描述 在mysql資料庫下,執行sql插入語句報錯。錯誤資訊如下 錯誤原因 在mysql5.7之後,sql mode中預設存在only full group by,sql語句未通過only full group by語義檢查所以報錯。only full group by only full gr...