【发布时间】:2018-08-26 18:31:41
【问题描述】:
我很难将特定的 MySQL 查询复制到 Knex(我使用 Bookshelf 作为 ORM)。 SQL 查询从数据库中返回所有表的元数据。
MySQL 查询
SELECT
T.TABLE_NAME,
C.COLUMN_NAME,
C.COLUMN_TYPE,
N.CONSTRAINT_TYPE,
K.REFERENCED_TABLE_NAME,
K.REFERENCED_COLUMN_NAME
FROM
INFORMATION_SCHEMA.TABLES T
LEFT JOIN
INFORMATION_SCHEMA.COLUMNS C USING (TABLE_SCHEMA , TABLE_NAME)
LEFT JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE K USING (TABLE_SCHEMA , TABLE_NAME , COLUMN_NAME)
LEFT JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS N USING (TABLE_SCHEMA , TABLE_NAME , CONSTRAINT_NAME)
WHERE
TABLE_TYPE = 'BASE TABLE'
AND TABLE_SCHEMA = 'sakila'
ORDER BY T.TABLE_NAME
此查询返回数据库的每个表之间的关系以及有关每个表的架构的详细信息。我不知道使用 knex 进行此操作的正确方法。
我尝试使用 knex 编写查询,但 INFORMATION_SCHEMA.KEY_COLUMN_USAGE、INFORMATION_SCHEMA.TABLE_CONSTRAINTS 是 MySQL 客户端非常特殊的东西,但是我的用例要求我将它用于 MS SQL。关于 knex 的 INFORMATION_SCHEMA 用法的文档并不多。
感谢任何见解 - 非常感谢。
【问题讨论】:
-
你试过了吗?请参阅knexjs.org中的示例
-
我试过了,但没有太多关于 knex 的 INFORMATION_SCHEMA 用法的文档。