MySQL 是目前應用廣泛的開源關系型數據庫,而 errno 121 是 MySQL 中常見的錯誤代碼之一。一個錯誤代碼為 121 的錯誤通常意味著在執行數據庫操作時出現了約束錯誤。
在 MySQL 中,約束錯誤常常源于外鍵約束。外鍵約束是指當試圖為一個表中的字段設定一個值時,該值必須在另一個表中已有,否則將方式設定操作。因此,當出現 errno 121 時,很可能是當前表正在嘗試更新的字段依賴于另一張表中缺失/重復的值,導致了更新操作的失敗。
除了外鍵約束,errno 121 還可以由其他類型的約束錯誤所引起。例如,如果試圖給一個已經存在的主鍵賦予一個重復的值,MySQL 將返回 121 錯誤。類似地,如果試圖給一個被設置為 NOT NULL 約束的字段賦予 NULL 值,也會觸發相同的錯誤代碼。
示例代碼: CREATE TABLE table1 ( id INT, name VARCHAR(50), PRIMARY KEY (id) ); CREATE TABLE table2 ( id INT, table1_id INT, value VARCHAR(50), PRIMARY KEY (id), FOREIGN KEY (table1_id) REFERENCES table1(id) ); INSERT INTO table1 (id, name) VALUES (1, 'Table 1'); INSERT INTO table2 (id, table1_id, value) VALUES (1, 2, 'Table 2'); -- errno 121
在上面的示例中,創建了兩個表 table1 和 table2,并且建立了 table2 中的 table1_id 字段與 table1 中的 id 字段之間的外鍵約束。在執行最后一條插入語句時,由于 table1 中不存在 id 為 2 的記錄,因此 MySQL 將返回 errno 121。
為了避免 errno 121 錯誤的發生,在設計數據庫時應該考慮好表之間的依賴關系,以及為每個表中的字段設定適當的約束條件,避免出現重復/缺失值等導致數據不一致的問題。