使用 MySQL 8
我需要在 LucidChart 中导入从数据库中提取的 ER。
以下是他们要求执行以获取包含导入所需的所有信息的行的查询。不幸的是,这不起作用,因为我能看到的唯一键是主键。我试图了解出了什么问题以及为什么会弄乱其他键,但我无法弄清楚。
SELECT 'mysql' dbms
, t.TABLE_SCHEMA
, t.TABLE_NAME
, c.COLUMN_NAME
, c.ORDINAL_POSITION
, c.DATA_TYPE
, c.CHARACTER_MAXIMUM_LENGTH
, n.CONSTRAINT_TYPE
, k.REFERENCED_TABLE_SCHEMA
, k.REFERENCED_TABLE_NAME
, k.REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.TABLES t
LEFT
JOIN INFORMATION_SCHEMA.COLUMNS c
ON t.TABLE_SCHEMA = c.TABLE_SCHEMA
AND t.TABLE_NAME = c.TABLE_NAME
LEFT
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
ON c.TABLE_SCHEMA = k.TABLE_SCHEMA
AND c.TABLE_NAME = k.TABLE_NAME
AND c.COLUMN_NAME = k.COLUMN_NAME
LEFT
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS n
ON k.CONSTRAINT_SCHEMA = n.CONSTRAINT_SCHEMA
AND k.CONSTRAINT_NAME = n.CONSTRAINT_NAME
AND k.TABLE_SCHEMA = n.TABLE_SCHEMA
AND k.TABLE_NAME = n.TABLE_NAME
WHERE t.TABLE_TYPE = 'BASE TABLE'
AND t.TABLE_SCHEMA NOT IN('INFORMATION_SCHEMA','mysql','performance_schema');
关键信息是我正在使用 Laravel 迁移。我想我已经找到了答案,但我会保持开放状态。