2

使用 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 迁移。我想我已经找到了答案,但我会保持开放状态。

4

0 回答 0