Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

mysql innodb:bảng mô tả không hiển thị các tham chiếu cột, những gì hiển thị chúng?

Khi kiểm tra, các khóa ngoại không được tạo trên máy của tôi bằng cú pháp sau:

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

Nhưng chúng là khi tôi sử dụng câu lệnh tạo này:

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

Một cách dễ dàng để xem liệu khóa ngoại có tồn tại trên bảng hay không là:

show create table bugs_products

Hoặc bạn có thể truy vấn lược đồ thông tin:

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'

Ngoài ra, hãy kiểm tra xem bạn đang sử dụng công cụ lưu trữ InnoDB. MyISAM engine không hỗ trợ khóa ngoại. Bạn có thể tìm thấy động cơ như:

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

Nếu bạn cố gắng tạo một khóa ngoại trên bảng MyISAM, nó sẽ âm thầm loại bỏ các tham chiếu và giả vờ thành công.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các giao dịch PHP, MySQL, PDO - Mã bên trong khối try có dừng lại ở commit () không?

  2. MySQL Inner Join Query Multiple Table

  3. Chèn MySQL đồng thời trong cùng một bảng:làm thế nào để?

  4. Không thể khôi phục bản sao lưu MYSQL vào Cơ sở dữ liệu mới

  5. Chèn nhiều bản ghi trong SQL trong đó các giá trị là sự kết hợp của tất cả các phạm vi đã xác định trong một truy vấn