Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL विदेशी कुंजी त्रुटि 1005 त्रुटि 150 प्राथमिक कुंजी विदेशी कुंजी के रूप में

एक विदेशी कुंजी बाधा बनाते समय, MySQL को संदर्भ तालिका और संदर्भित तालिका दोनों पर प्रयोग करने योग्य अनुक्रमणिका की आवश्यकता होती है। संदर्भ तालिका पर अनुक्रमणिका स्वचालित रूप से बनाई जाती है यदि कोई मौजूद नहीं है, लेकिन संदर्भित तालिका पर एक को मैन्युअल रूप से बनाने की आवश्यकता है (स्रोत ) ऐसा लगता है कि आपका गायब है।

टेस्ट केस:

CREATE TABLE tbl_a (
    id int PRIMARY KEY,
    some_other_id int,
    value int
) ENGINE=INNODB;
Query OK, 0 rows affected (0.10 sec)

CREATE TABLE tbl_b (
    id int PRIMARY KEY,
    a_id int,
    FOREIGN KEY (a_id) REFERENCES tbl_a (some_other_id)
) ENGINE=INNODB;
ERROR 1005 (HY000): Can't create table 'e.tbl_b' (errno: 150)

लेकिन अगर हम some_other_id . पर एक इंडेक्स जोड़ते हैं :

CREATE INDEX ix_some_id ON tbl_a (some_other_id);
Query OK, 0 rows affected (0.11 sec)
Records: 0  Duplicates: 0  Warnings: 0

CREATE TABLE tbl_b (
    id int PRIMARY KEY,
    a_id int,
    FOREIGN KEY (a_id) REFERENCES tbl_a (some_other_id)
) ENGINE=INNODB;
Query OK, 0 rows affected (0.06 sec)

अधिकांश स्थितियों में यह अक्सर कोई समस्या नहीं होती है, क्योंकि संदर्भित फ़ील्ड अक्सर संदर्भित तालिका की प्राथमिक कुंजी होती है, और प्राथमिक कुंजी स्वचालित रूप से अनुक्रमित होती है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लोड डेटा स्थानीय इनफाइल में वर्जित... PHP

  2. Passport, Redis और MySQL का उपयोग करके Node.js में सत्रों का प्रबंधन कैसे करें

  3. कुबेरनेट्स पर गैलेरा क्लस्टर चलाना

  4. MySQL या MariaDB डेटाबेस से कैसे कनेक्ट करें

  5. MySQL विदेशी कुंजी