<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # mysql 5.7 groupby 近期在開發過程中,因為項目開發環境連接的mysql數據庫是阿里云的數據庫,而阿里云的數據庫版本是5.6的。而測試環境的mysql是自己安裝的5.7。因此在開發過程中有小伙伴不注意寫了有關group by的sql語句。在開發環境中運行是正常的,而到了測試環境中就發現了異常。 原因分析:MySQL5.7版本默認設置了 mysql sql\_mode = only\_full\_group\_by 屬性,導致報錯。 其中ONLY\_FULL\_GROUP\_BY就是造成這個錯誤的罪魁禍首了,對于group by聚合操作,如果在select中的列沒有在group by中出現,那么這個SQL是不合法的,因為列不在group by從句中,所以設置了sql\_mode=only\_full\_group\_by的數據庫,在使用group by時就會報錯。 測試環境下載安裝的是最新版的mysql5.7.x版本,默認是開啟了 only\_full\_group\_by 模式的,但開啟這個模式后,原先的 group by 語句就報錯,然后又把它移除了。 一旦開啟 only\_full\_group\_by ,感覺,group by 將變成和 distinct 一樣,只能獲取受到其影響的字段信息,無法和其他未受其影響的字段共存,這樣,group by 的功能將變得十分狹窄了 only\_full\_group\_by 模式開啟比較好。因為在 mysql 中有一個函數: any\_value(field) 允許,非分組字段的出現(和關閉 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,對于新建的數據庫有效。對于已存在的數據庫,則需要在對應的數據下執行 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數據庫重啟后依然無效,下列方式重啟后依然生效 找到MySQL的配置文件,在linux系統上/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\]配置內,這樣添加完后重啟mysql才會生效,退出數據庫:exit,重啟命令: service mysqld restart 刷新頁面報錯信息消失成功解決,再次連接上數據庫查看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 ———————————————— 版權聲明:本文為CSDN博主「澳宋殖民部部部長」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:[https://blog.csdn.net/weixin\_32445333/article/details/113187439](https://blog.csdn.net/weixin_32445333/article/details/113187439)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看