mysql设置常用——修改大小写、设置sql_mode不支持功能、
一,MySQL 設置不區分大小寫、
***:錯誤原因:后臺java代碼連接數據庫mysql 報錯
java運行報錯日志:### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'cpw.admin_User' doesn't exist
Linux系統下mysql設置不區分大小寫
1,查詢當前設置:
查詢當前支持的: mysql> show variables like '%lower%';lower_case_table_names=1
其中0:區分大小寫,1:不區分大小寫
lower_case_file_system
表示當前系統文件是否大小寫敏感,只讀參數,無法修改。
ON ?大小寫不敏感?
OFF 大小寫敏感?
lower_case_table_names
表示表名是否大小寫敏感,可以修改。
lower_case_table_names = 0時,mysql會根據表名直接操作,大小寫敏感。?
lower_case_table_names = 1時,mysql會先把表名轉為小寫,再執行操作。
?
2,修改設置:
# vim /etc/my.cnf 7 lower_case_table_names=1# systemctl restart mysqld mysql> show variables like '%lower%'; #修改后查詢修改為——1*** 在部分版本的MySQL下,如果之前有大寫的表,修改參數后改表會提示不存在,而且也無法修改,應用程序就操作不了。
問題剖析:
如果在lower_case_table_names=0情況下已經導入了大量的表和數據,表名有大寫,有小寫,此時再換成lower_case_table_names=1會出錯。
解決辦法:在lower_case_table_names=0時,將表名全部改成小寫的;如果有數據庫名稱中存在大寫字母,也需同時改名,改名方法為新建一個小寫的數據庫, 再改表名。(最方便的是直接使用MySQL界面客戶端修改)
全部改名之后,再設置lower_case_table_names=1,重啟MySQL。
更改后查詢確認:
3,重啟服務測試。
二,修改sql_mode,不支持的查詢問題
java代碼里查詢mysql時報錯:
### Error querying database. ?Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'cpw.un.SpMoney' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
sql直接運行查詢: 報錯!!!
mysql> SELECT usi.spreaderID,us.counts,us.phone,us.realName,us.identityCard,SUM(usi.spreadNum) spreadNum,SUM(usi.tradingMoney) tradingMoney ,son.SpMoney-> FROM usr_Spreader us RIGHT JOIN usr_SpreadInfo usi ON us.ID=usi.spreaderID LEFT JOIN usr_userextension son ON son.spreaderID=us.ID-> WHERE us.phone=100; //查詢推廣人總額==============================================================================
解決思路:
MySQL 5.7版本sql_mode=only_full_group_by問題
用到GROUP BY 語句查詢時com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'col_user_6.a.START_TIME' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by錯誤
解決方法 :執行SET GLOBAL sql_mode = ''; 把sql_mode 改成非only_full_group_by模式。驗證是否生效?SELECT @@GLOBAL.sql_mode 或者 SELECT @@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';
方法 1, 查詢sql_mode:
mysql> SELECT @@GLOBAL.sql_mode; 或者 mysql> SELECT @@sql_mode; #查詢支持的sql_mode2,修改sql_mode:
mysql> SET GLOBAL sql_mode = ''; #把sql_mode 改成非only_full_group_by模式?
方法2,直接修改sql_mode:
mysql> select @@sql_mode;mysql> 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设置常用——修改大小写、设置sql_mode不支持功能、的全部內容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: macbook Pro 上安装Windo
- 下一篇: java 环境部署——java源码包的安