126 1054 1146 1062 24
(休息一下)由於包含了這 4 個錯誤號,我認為這個頁面將覆蓋使用者獲得的典型錯誤的大約 50%。
(是的,這個’示例’需要修改。)
24 無法開啟檔案(開啟的檔案太多)
open_files_limit
來自 OS 設定。table_open_cache
需要小於那個。
這些可能會導致錯誤:
-
未能在儲存過程中使用
DEALLOCATE PREPARE
。 -
具有大量分割槽且 innodb_file_per_table = ON 的 PARTITIONed 表。建議在給定的表中沒有超過 50 個分割槽(出於各種原因)。 (當
Native Partitions
可用時,此建議可能會發生變化。)
顯而易見的解決方法是設定增加作業系統限制:要允許更多檔案,請更改 ulimit
或/etc/security/limits.conf
或 sysctl.conf
(kern.maxfiles&kern.maxfilesperproc)或其他內容(取決於作業系統)。然後增加 open_files_limit
和 table_open_cache
。
從 5.6.8 開始,open_files_limit
基於 max_connections
自動調整大小,但可以從預設值更改。
1062 - 重複錄入
發生此錯誤主要是由於以下兩個原因
-
重複價值 -
Error Code: 1062. Duplicate entry ‘12’ for key ‘PRIMARY’
主鍵列是唯一的,它不接受重複的條目。因此,當你嘗試插入已存在於表中的新行時,將產生此錯誤。
要解決此問題,請將主鍵列設定為
AUTO_INCREMENT
。當你嘗試插入新行時,請忽略主鍵列或將NULL
值插入主鍵。
CREATE TABLE userDetails(
userId INT(10) NOT NULL AUTO_INCREMENT,
firstName VARCHAR(50),
lastName VARCHAR(50),
isActive INT(1) DEFAULT 0,
PRIMARY KEY (userId) );
--->and now while inserting
INSERT INTO userDetails VALUES (NULL ,'John', 'Doe', 1);
-
獨特的資料欄位 -
Error Code: 1062. Duplicate entry ‘A’ for key ‘code’
你可以將列指定為唯一,並嘗試插入具有該列現有值的新行將產生此錯誤。
要克服此錯誤,請使用
INSERT IGNORE
而不是普通的INSERT
。如果你嘗試插入的新行不會複製現有記錄,則 MySQL 會像往常一樣插入它。如果記錄是重複的,則IGNORE
關鍵字會丟棄它而不會產生任何錯誤。
INSERT IGNORE INTO userDetails VALUES (NULL ,'John', 'Doe', 1);