关于sequelize-cli运行db:migrate to create/alter tables on MySQL的问题。根据document运行迁移。
我看到sql (原始查询)是来自sequelize cli的控制台输出的一部分,如下所示:
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来创建其他表,但我看不到显示的原始查询。
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?
发布于 2020-01-16 13:48:19
我在研究这个问题时发现:当您在迁移文件中查询实体模型时,确实会将SQL查询转储到stdout中。如果使用queryInterface.XXXX或queryInterface.sequilize.query(XXXX),则不会将SQL转储到标准输出。
迁移文件的正确选择应该是使用queryInterface而不是实体模型,因为您的模型可能会在一段时间内更改,这将破坏旧的迁移文件,您将开始收到一些字段和/或引用不存在的错误。反过来,queryInterface不依赖于模型,只执行纯sql查询
https://stackoverflow.com/questions/59263180
复制相似问题