首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示在sequelize-cli迁移中执行的SQL,以便稍后在生产更新中使用

如何显示在sequelize-cli迁移中执行的SQL,以便稍后在生产更新中使用
EN

Stack Overflow用户
提问于 2019-12-10 16:41:04
回答 1查看 617关注 0票数 1

关于sequelize-cli运行db:migrate to create/alter tables on MySQL的问题。根据document运行迁移。

我看到sql (原始查询)是来自sequelize cli的控制台输出的一部分,如下所示:

代码语言:javascript
复制
npx sequelize-cli db:migrate --config "dbconfig.json" --env "localdb"
npx: installed 106 in 17.63s

Sequelize CLI [Node: 10.13.0, CLI: 5.4.0, ORM: 4.37.10]
:
:
== 20190417134836-mstprices: migrating =======
Executing (default): CREATE TABLE IF NOT EXISTS `mstprices` (`id` INTEGER NOT NULL auto_increment , `units` VARCHAR(16), `price` DECIMAL(10,3), `siteid` INTEGER, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing (default): CREATE TABLE IF NOT EXISTS `SequelizeMeta` (`name` VARCHAR(255) NOT NULL UNIQUE , PRIMARY KEY (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci;
Executing (default): SHOW INDEX FROM `SequelizeMeta`
Executing (default): INSERT INTO `SequelizeMeta` (`name`) VALUES ('20190417134836-mstprices.js');
== 20190417134836-mstprices: migrated (0.182s)

我可以获取这些SQL (CREATE TABLE )稍后在生产环境中运行

现在我使用的是最新版本,并尝试使用相同的db:migrate来创建其他表,但我看不到显示的原始查询。

代码语言:javascript
复制
npx sequelize-cli db:migrate --config "dbconfig.json" --env "localdb"

Sequelize CLI [Node: 10.16.0, CLI: 5.5.1, ORM: 4.44.3]

Loaded configuration file "dbconfig.json".
Using environment "localdb".
sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators node_modules\sequelize\lib\sequelize.js:245:13
== 20191210064127-create-tbl-service-time-log: migrating =======
== 20191210064127-create-tbl-service-time-log: migrated (0.185s)

是不是某个设置或sequelize-cli停止了在控制台上打印原始查询?

如何获取在数据库上执行sequelize-cli的SQL?

EN

回答 1

Stack Overflow用户

发布于 2020-01-16 13:48:19

我在研究这个问题时发现:当您在迁移文件中查询实体模型时,确实会将SQL查询转储到stdout中。如果使用queryInterface.XXXXqueryInterface.sequilize.query(XXXX),则不会将SQL转储到标准输出。

迁移文件的正确选择应该是使用queryInterface而不是实体模型,因为您的模型可能会在一段时间内更改,这将破坏旧的迁移文件,您将开始收到一些字段和/或引用不存在的错误。反过来,queryInterface不依赖于模型,只执行纯sql查询

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59263180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档