Как отобразить SQL, выполненный при миграции sequelize-cli, для последующего использования в производственном обновлении

Вопрос о sequelize-cli при запуске db: migrate для создания / изменения таблиц в MySQL. Выполняется перенос в соответствии с документом.

Я видел 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-запросы (СОЗДАТЬ ТАБЛИЦУ ..), чтобы запустить их в производство позже.

Теперь, когда я использую последнюю версию и пытаюсь выполнить ту же операцию 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 перестала печатать необработанный запрос на консоли?

Как мне получить SQL-запросы, которые sequelize-cli выполняет в базе данных?


person NBhat    schedule 10.12.2019    source источник


Ответы (1)


Из того, что я обнаружил при исследовании этого вопроса: когда вы запрашиваете модели сущностей в своих файлах миграции, тогда у вас действительно есть SQL-запрос, выгружаемый в стандартный вывод. Если вы используете queryInterface.XXXX или queryInterface.sequilize.query (XXXX), вы не получите дамп SQL в стандартный вывод.

И правильный выбор для файлов миграции должен заключаться в использовании queryInterface вместо моделей сущностей, так как ваши модели через некоторое время могут быть изменены, и это приведет к поломке ваших старых файлов миграции, вы начнете получать ошибки, которые некоторые полей и / или ссылок не существует. queryInterface, в свою очередь, не полагается на модели, а просто выполняет чистые запросы sql.

person Anton    schedule 16.01.2020