MySQL Error (Always Continue) 其實大部分error在網上都有對應的解決辦法,尤其是對Mysql這種使用範圍很廣的技術。自己就不為每個error單獨發佈博客了,僅在這裡不斷添加,將自己遇到過的error,error原因,以及解決過程整理於此。 Error 1366 Err ...
MySQL Error (Always Continue)
其實大部分error在網上都有對應的解決辦法,尤其是對Mysql這種使用範圍很廣的技術。自己就不為每個error單獨發佈博客了,僅在這裡不斷添加,將自己遇到過的error,error原因,以及解決過程整理於此。
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
Error 1062 (23000)
Error情景:執行存儲過程的時候報錯(0630)
原因:之前測試的存儲過程已經創建了表存儲過程中要創建的表,因此就直接進行插入數據,但因為執行之前的存儲過程時數據已經插入,造成了PRIMARY KEY 的重覆。
Solution:刪除之前存儲過程創建的表,重新執行存儲過程
Error 1054 (42S22)
Error情景:執行存儲過程的時候報錯ERROR 1054 (42S22): Unknown column 'temp_contnet' in 'field list'
(0630)
原因:根本原因是表中沒有這個欄位,或者以變數方式插入字元類型時沒有加單/雙引號
Solution:在自己存儲過程插入數據的一步中,為臨時變數加上單引號INSERT INTO t2 (id,content) values (temp_id,'temp_contnet');