欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          一文詳解MySQL設置only_full_group_by報錯問題

          一文詳解MySQL設置only_full_group_by報錯問題

          開發(fā)環(huán)境連接的 mysql5.6,而測試環(huán)境是 mysql5.7。開發(fā)中有小伙伴寫了有關 group bysql 語句。在開發(fā)環(huán)境中運行是正常的,而到了測試環(huán)境中就發(fā)現(xiàn)了異常。

          原因分析:MySQL5.7 版本默認設置了 mysql sql_mode = only_full_group_by 屬性,導致報錯。

          其中 ONLY_FULL_GROUP_BY 就是造成這個錯誤的罪魁禍首了,在這種嚴格模式下,對于 group by 聚合操作,若在 select 中的列沒有在group by 中出現(xiàn),那么這個 SQL 就是不合法的。因為開發(fā)寫的 sql 中,select 列不在 group by 從句中,在使用 group by 時就會報錯。

          測試環(huán)境下載安裝的是最新版的 mysql5.7.x 版本,默認是開啟了 only_full_group_by 模式的。

          1. 查看 sql_mode

          SELECT` `@@sql_mode;
          登錄后復制

          查詢出來的值為:

          ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

          2. 去掉ONLY_FULL_GROUP_BY,重新設置值。

          SET` `@@``global``.sql_mode =``'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'``;
          登錄后復制

          3. 上面是改變了全局sql_mode,對于新建的數(shù)據(jù)庫有效。

          對于已存在的數(shù)據(jù)庫,則需要在對應的數(shù)據(jù)下執(zhí)行

          SET` `sql_mode =``'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'``;
          登錄后復制

          以上方法mysql數(shù)據(jù)庫重啟后依然無效,下列方式重啟后依然生效

          找到 MySQL 的配置文件,在 linux 系統(tǒng)上 /etc/my.cnf 文件,查詢 sql_mode 字段,我并沒有在配置文件中找到這個關鍵字,所以我手動添加進去:

          sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
          登錄后復制

          需要注意的一點是一定要添加在 [mysqld] 配置內(nèi),這樣添加完后重啟mysql 才會生效,退出數(shù)據(jù)庫:exit,重啟命令:

          service mysqld restart  #lnmp重啟mysql lnmp restart mysql
          登錄后復制

          刷新頁面報錯信息消失成功解決,再次連接上數(shù)據(jù)庫查看 sql_mode 配置 select @@sql_mode :

          STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

          到此這篇關于 Mysql5.7 及以上版本 ONLY_FULL_GROUP_BY 報錯的解決方法的文章就介紹到這了,

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號