国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL-[Err] 1055 - Expression #1

2024-07-24 12:36:24
字體:
來源:轉載
供稿:網友

問題描述:mysql數據庫下,執行SQL插入語句報錯。錯誤信息如下:

錯誤原因:MySQL5.7之后,sql_mode中默認存在ONLY_FULL_GROUP_BYSQL語句未通過ONLY_FULL_GROUP_BY語義檢查所以報錯。

ONLY_FULL_GROUP_BYONLY_FULL_GROUP_BY要求select語句中查詢出來的列必須是明確的(其他語句也是一樣)。

  以SQL語句select columes from table group by list為例:columns必須是聚集函數或者在group by后的表達式list中,并且list中必須包含主鍵,否則也會報錯。

    insertupdatedelete語句都會報錯(但不影響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服務即可生效

  二、只在當前會話中解決,重新進入MySQL后失效

    1)在MySQL下執行SELECT @@sql_mode語句

    2)將查詢結果中的ONLY_FULL_GROUP_BY去掉然后復制,然后執行set sql_mode = '修改后的值'

  三、只在當前服務中解決,重新MySQL服務后失效

    1)解決方式同方法二,只是在selectset時添加global關鍵字。具體可查看下圖

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福鼎市| 封开县| 象山县| 塔城市| 遂溪县| 越西县| 哈巴河县| 广灵县| 商都县| 蛟河市| 金寨县| 海阳市| 南溪县| 饶平县| 南丰县| 农安县| 瓮安县| 寿光市| 兴仁县| 富阳市| 大连市| 三穗县| 玛曲县| 宣城市| 淮滨县| 剑川县| 津市市| 巴南区| 芒康县| 稻城县| 阳朔县| 山阳县| 醴陵市| 子洲县| 陆川县| 察雅县| 黎城县| 嘉定区| 永善县| 博乐市| 平定县|