Выберите всю таблицу и столбец из базы данных с атрибутом первичного / уникального и внешнего ключа

Использование MySQL 8

Мне нужно импортировать в LucidChart ER, извлеченный из базы данных.

Ниже приводится запрос, который они запрашивают у exec, чтобы получить строки со всей информацией, необходимой для импорта. К сожалению, это не работает, поскольку я вижу только первичные ключи. Я пытался понять, что не так и почему не работает с другими клавишами, но не могу понять.

 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 миграции. Думаю, я уже нашел ответ, но оставлю его открытым.

0 ответов

Другие вопросы по тегам