日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql设置常用——修改大小写、设置sql_mode不支持功能、

發(fā)布時間:2025/4/16 数据库 81 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql设置常用——修改大小写、设置sql_mode不支持功能、 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一,MySQL 設置不區(qū)分大小寫、

***:錯誤原因:后臺java代碼連接數(shù)據(jù)庫mysql 報錯

java運行報錯日志:### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'cpw.admin_User' doesn't exist

Linux系統(tǒng)下mysql設置不區(qū)分大小寫

1,查詢當前設置:

查詢當前支持的: mysql> show variables like '%lower%';

lower_case_table_names=1

其中0:區(qū)分大小寫,1:不區(qū)分大小寫

lower_case_file_system
表示當前系統(tǒng)文件是否大小寫敏感,只讀參數(shù),無法修改。
ON ?大小寫不敏感?
OFF 大小寫敏感?
lower_case_table_names
表示表名是否大小寫敏感,可以修改。
lower_case_table_names = 0時,mysql會根據(jù)表名直接操作,大小寫敏感。?
lower_case_table_names = 1時,mysql會先把表名轉為小寫,再執(zhí)行操作。
?

2,修改設置:

# vim /etc/my.cnf 7 lower_case_table_names=1# systemctl restart mysqld

mysql> show variables like '%lower%'; #修改后查詢修改為——1

*** 在部分版本的MySQL下,如果之前有大寫的表,修改參數(shù)后改表會提示不存在,而且也無法修改,應用程序就操作不了。

問題剖析:

如果在lower_case_table_names=0情況下已經導入了大量的表和數(shù)據(jù),表名有大寫,有小寫,此時再換成lower_case_table_names=1會出錯。

解決辦法:在lower_case_table_names=0時,將表名全部改成小寫的;如果有數(shù)據(jù)庫名稱中存在大寫字母,也需同時改名,改名方法為新建一個小寫的數(shù)據(jù)庫, 再改表名。(最方便的是直接使用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錯誤

解決方法 :執(zhí)行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_mode

2,修改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不支持功能、的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。