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

mysql innodb:तालिका का वर्णन कॉलम संदर्भ नहीं दिखाता है, उन्हें क्या दिखाता है?

परीक्षण करने पर, इस सिंटैक्स का उपयोग करके मेरी मशीन पर विदेशी कुंजियाँ नहीं बनाई जाती हैं:

CREATE TABLE bugs (
  ...
  reported_by       VARCHAR(100) REFERENCES accounts(account_name),
  ...
 ) ENGINE = INNODB;

लेकिन वे तब होते हैं जब मैं इस निर्माण कथन का उपयोग करता हूं:

CREATE TABLE bugs (
  ...
  reported_by       VARCHAR(100),
  ...
  FOREIGN KEY (reported_by) REFERENCES accounts(account_name)
 ) ENGINE = INNODB;

यह देखने का एक आसान तरीका है कि टेबल पर विदेशी कुंजियाँ मौजूद हैं या नहीं:

show create table bugs_products

या आप जानकारी स्कीमा को क्वेरी कर सकते हैं:

select
  table_schema
, table_name
, column_name
, referenced_table_schema
, referenced_table_name
, referenced_column_name
from information_schema.KEY_COLUMN_USAGE
where table_name = 'bugs'

यह भी जांचें कि आप InnoDB संग्रहण इंजन का उपयोग कर रहे हैं। MyISAM इंजन विदेशी कुंजियों का समर्थन नहीं करता है। आप जैसे इंजन पा सकते हैं:

select table_schema, table_name, engine
from information_schema.TABLES
where table_name = 'bugs'

यदि आप MyISAM तालिका पर एक विदेशी कुंजी बनाने का प्रयास करते हैं, तो यह चुपचाप संदर्भों को त्याग देगी और सफल होने का दिखावा करेगी।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL डेटाबेस में AES एन्क्रिप्टेड जानकारी को कैसे स्टोर करें

  2. MySQL निर्दिष्ट कुंजी बहुत लंबी थी

  3. जब आप GROUP BY का उपयोग कर सकते हैं तो आपको DISTINCT का उपयोग क्यों नहीं करना चाहिए?

  4. कनेक्शन पूल रणनीति:अच्छा, बुरा या बदसूरत?

  5. पंक्ति का आकार बहुत बड़ा है (> 8126) क्या मैं सिर्फ InnoDB को MyISAM में बदल सकता हूँ?