mysql5.7 修改sql_mode配置


服務器環境:windows  server 2012 R2、mysql5.7.17

出現問題:在本地開發環境下一切正常,部署到服務器上出現GROUP BY 的聚合函數錯誤,如下:
     select id, name from user group by name 錯誤;
       select id, name from user group by id,name 正確;

問題原因:經過排查找到原因,在MySQL5.7之后,sql_mode配置中默認存在ONLY_FULL_GROUP_BY,

       SQL語句未通過ONLY_FULL_GROUP_BY語義檢查所以報錯;

解決過程:很好理解,只要成功修改MySQL的sql_mode配置就可以了。
  1.查看當前sql_mode配置情況: SELECT @@sql_mode 如下:
       

     2.修改sql_mode,推薦用第二種方式
   方式一:使用命令 ,但是治標不治本,重啟MySQL服務此設置就失效;

set @@sql_mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

   方式二: 打開my.ini文件(若沒有的話點這里試試),找到sql_mode,去掉ONLY_FULL_GROUP_BY,
        若沒有sql_mode,則在最后增加 sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
        然后重啟服務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM