MySQL Error (Always Continue)
其實大部分error在網上都有對應的解決辦法,尤其是對Mysql這種使用范圍很廣的技術,自己就不為每個error單獨發布博客了,僅在這里不斷添加,將自己遇到過的error,error原因,以及解決程序整理于此,按照Error號遞增排序
Error 1337 (42000)
Error情景:在創建存盤程序時報錯ERROR 1337 (42000): Variable or condition declaration after cursor or handler declaration
原因: 根據字面意思,我們要在定義游標和處理程式前定義完需要的變數以及“done”
Solution:將創建游標和處理程式(DECLARE continue HANDLER FOR NOT FOUND SET done = ture;)的定義放在最后
Error 1366
Error情景:為varchar()型別資料新增欄位的時候,明明有雙引號且格式無誤,但就是報錯1366,無法插入,
原因:欄位的字符集與傳輸SQL陳述句的字符集不想匹配,(0629)
Solution:修改字符集
方法一:僅修改該欄位字符集
-
查看欄位字符集(表名為t)
SHOW full columns FROM t;DESC t; 無法查看字符集資訊
-
修改欄位屬性(即,修改欄位型別)
ALTER TABLE t CHANGE content content varchar(20) character SET utf8 collate utf8_unicode_ci;當然,utf8作為我們最常用的字符集,當然不想一次次地修改,
PS.
_ci結尾的字符集“不區分大小寫”, _cs結尾則區分大小寫
utf8是國際編碼,包含所有國家需要用到的字符
一般推薦使用utf8_unicode_ci,因為utf8_general_ci雖然校對速度快,但對德語、法語、俄語支持得不是很好,正確率較低,
方法二:修改資料庫默認字符集并重啟資料庫
-
退出當前所使用的資料庫
USE mysql; -
查詢默認字符集
SHOW variables like 'character%'; -
修改默認字符集(Centos7 MySQL5.7)
#退出MySQL vi /eyc/my.cnf #添加,保存并退出 default-storage-engine=INNODB character-set-server=utf8 collation-server=utf8_general_ci -
重啟mysql
systemctl restart mysqld.service -
檢驗:
SHOW variables like 'character%';要求除了character_set_filesystem,character_sets_dir其他都為utf8.
Error 1054 (42S22)
Error情景:執行存盤程序的時候報錯ERROR 1054 (42S22): Unknown column 'temp_contnet' in 'field list'(0630)
原因:在執行從已有表中讀取以字串為內容的欄位轉存至新表時,兩表中對應兩欄位字符集不相同
Solution:洗掉已新建的表和存盤程序,修改存盤程序新建表字符集,重新執行存盤程序
Error 1062 (23000)
Error情景:執行存盤程序的時候報錯(0630)
原因:之前測驗的存盤程序已經創建了表存盤程序中要創建的表,因此就直接進行插入資料,但因為執行之前的存盤程序時資料已經插入,造成了PRIMARY KEY 的重復,
Solution:洗掉之前存盤程序創建的表,重新執行存盤程序
Error 1064 (42000)
Error情景:創建存盤程序時報錯ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near...(0710)
原因:根據英文可知是有語法錯誤
Solution:這里整理下有可能出現的語法錯誤,方便以后對照排查
- 拼寫錯誤
- INSERT INTO 后面沒有加括號,即使只有一個變數插入也要加括號
Error 1075 (42000)
Error情景:執行存盤程序時報錯(0630)
原因:根據error的提示,說明在存盤程序中創建資料表時沒有將自增列設定為主鍵
Solution:自增列必須為主鍵
Error 1819 (HY000)
Error情景:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements(0716)
原因:創建用戶時密碼不符合規范
Solution:詳見此處
Error 1044 (42000)
Error情景:ERROR 1044 (42000): Access denied for user 'sx'@'%' to database 'travel_agency'(0716)
原因:很自然咯,權限不夠
Solution:
GRANT ALL PRIVILEGES ON `travel_agency`.* TO 'sx'@'%' WITH GRANT OPTION
注意授權時資料庫名欄位一定要使用英文頓號
Navicat 1142 SELECT command denied to user 'sx'@'xxx' for table 'user'
Error情景:(0716)
原因:用戶sx沒有訪問mysql.user表的權限
Solution:詳見此處
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/19744.html
標籤:MySQL
下一篇:初識MySQL
