MySQL錯誤1005(errno: 150)的原因分析與解決方案
這個錯誤是MySQL中非常常見的外鍵約束創(chuàng)建失敗錯誤。
錯誤本質
錯誤信息:
1005 - Can't create table 'zkac.#sql-1350_1' (errno: 150)
這表示MySQL在嘗試創(chuàng)建表或添加外鍵約束時失敗了,具體是外鍵約束創(chuàng)建過程中遇到了問題。
根本原因排查清單
1. 數(shù)據(jù)類型不匹配(最常見原因)
檢查方法:
SHOW CREATE TABLE navigation_target_point_info; SHOW CREATE TABLE task_type_info;
- 必須滿足:
ntpi_task_type_name和robot_task_type_name的數(shù)據(jù)類型完全一致- 對于字符串類型,長度、字符集和排序規(guī)則也必須一致
2. 被引用列不是主鍵或唯一鍵
檢查方法:
SHOW INDEX FROM task_type_info WHERE Key_name = 'PRIMARY' OR Column_name = 'robot_task_type_name';
解決方案:
-- 如果不是主鍵或唯一鍵,需要添加 ALTER TABLE task_type_info ADD UNIQUE INDEX idx_robot_task_type_name (robot_task_type_name);
3. 存儲引擎不支持外鍵
檢查方法:
SHOW TABLE STATUS LIKE 'navigation_target_point_info'; SHOW TABLE STATUS LIKE 'task_type_info';
解決方案:
-- 轉換為InnoDB引擎 ALTER TABLE navigation_target_point_info ENGINE=InnoDB; ALTER TABLE task_type_info ENGINE=InnoDB;
4. 數(shù)據(jù)不一致問題
檢查方法:
-- 查找外鍵表中有但主鍵表中沒有的值 SELECT DISTINCT ntpi.ntpi_task_type_name FROM navigation_target_point_info ntpi LEFT JOIN task_type_info tti ON ntpi.ntpi_task_type_name = tti.robot_task_type_name WHERE ntpi.ntpi_task_type_name IS NOT NULL AND tti.robot_task_type_name IS NULL;
- 解決方案:
- 刪除無效數(shù)據(jù)
- 或在主表中添加缺失的記錄
5. 表不存在或列名錯誤
檢查方法:
-- 確認表和列是否存在
SELECT * FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'zkac'
AND TABLE_NAME IN ('navigation_target_point_info', 'task_type_info')
AND COLUMN_NAME IN ('ntpi_task_type_name', 'robot_task_type_name');以上就是MySQL錯誤1005(errno: 150)的原因分析與解決方案的詳細內容,更多關于MySQL錯誤1005(errno: 150)的資料請關注腳本之家其它相關文章!
相關文章
navicat 連接數(shù)據(jù)庫隔段時間后自動斷開連接的解決方案
這篇文章主要介紹了navicat 連接數(shù)據(jù)庫隔段時間后自動斷開連接的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Mysql數(shù)據(jù)庫之常用sql語句進階與總結
這篇文章主要介紹了Mysql數(shù)據(jù)庫之常用sql語句,總結分析了MySQL數(shù)據(jù)庫常用的查詢、條件查詢、排序、連接查詢、子查詢等相關操作技巧,需要的朋友可以參考下2019-11-11
mysql?count()函數(shù)不計算null和空值問題
這篇文章主要介紹了mysql?count()函數(shù)不計算null和空值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Mysql| 使用通配符進行模糊查詢詳解(like,%,_)
這篇文章主要介紹了Mysql| 使用通配符進行模糊查詢詳解(like,%,_),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
window下mysql 8.0.15 winx64安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了window下mysql 8.0.15 winx64安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-03-03

