国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL使用中遇到的問題記錄

2024-07-24 12:50:53
字體:
來源:轉載
供稿:網友

這兒記錄一些在使用MySQL的過程中遇到的問題以及相應的解決辦法。

sql_mode=only_full_group_by引起group by查詢報錯

問題
MySQL執行 GROUP BY 查詢報錯:

#1 - Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column this is incompatible with sql_mode=only_full_group_by

解決辦法

# 設置正確的 sql_mode 即可解決# 登陸MySQLsudo mysql -hlocalhost -uroot -p123123SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

也可以修改MySQL配置文件,然后重啟MySQL服務

# 打開MySQL配置文件sudo vim /etc/mysql/conf.d/mysql.cnf# 在底部添加下面這句sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION# 然后重啟sudo service mysql restart

詳解
sql_mode默認值是空值,在這種設置下是可以允許一些非法操作的,比如允許一些非法數據的插入。在生產環境必須將這個值設置為嚴格模式,所以開發、測試環境的數據庫也必須要設置,這樣在開發測試階段就可以發現問題。sql_mode常用值如下:

ONLY_FULL_GROUP_BY:對于GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY里出現,那么這個SQL是不合法的,因為列不在GROUP BY從句中
NO_AUTO_VALUE_ON_ZERO:該值影響自增長列的插入。默認設置下,插入0或NULL代表生成下一個自增長值。如果用戶 希望插入的值為0,而該列又是自增長的,那么這個選項就有用了
STRICT_TRANS_TABLES:在該模式下,如果一個值不能插入到一個事務表中,則中斷當前的操作,對非事務表不做限制
NO_ZERO_IN_DATE:在嚴格模式下,不允許日期和月份為零
NO_ZERO_DATE:設置該值,mysql數據庫不允許插入零日期,插入零日期會拋出錯誤而不是警告
ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE過程中,如果數據被零除,則產生錯誤而非警告。如 果未給出該模式,那么數據被零除時MySQL返回NULL
NO_AUTO_CREATE_USER:禁止GRANT創建密碼為空的用戶
NO_ENGINE_SUBSTITUTION:如果需要的存儲引擎被禁用或未編譯,那么拋出錯誤。不設置此值時,用默認的存儲引擎替代,并拋出一個異常
PIPES_AS_CONCAT:將"||"視為字符串的連接操作符而非或運算符,這和Oracle數據庫是一樣的,也和字符串的拼接函數Concat相類似
ANSI_QUOTES:啟用ANSI_QUOTES后,不能用雙引號來引用字符串,因為它被解釋為識別符

清空表數據

問題
當進行數據遷移或者數據修復的時候,經常需要用到數據表清空,數據表重置。

解決方案

可以使用 TRUNCATE TABLE table_name 命令重置數據表,這個命令的實質是刪除表,然后再重建表,對于有約束的表來說,是行不通的,必須先禁用外鍵約束再執行刪除。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴楚县| 攀枝花市| 清远市| 浠水县| 紫阳县| 上栗县| 高平市| 周宁县| 绥阳县| 远安县| 密山市| 泰州市| 南涧| 龙南县| 穆棱市| 缙云县| 门源| 金阳县| 大余县| 综艺| 手游| 满洲里市| 吉水县| 陇西县| 台州市| 镇平县| 贡嘎县| 晋宁县| 林州市| 博兴县| 吉安县| 巢湖市| 互助| 芷江| 鄂州市| 湖北省| 昌黎县| 丰城市| 泸定县| 庆阳市| 宿迁市|