首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sequelize Serverless脱机迁移出错

Sequelize Serverless脱机迁移出错
EN

Stack Overflow用户
提问于 2020-07-29 03:11:04
回答 2查看 267关注 0票数 0

使用此命令,可以在本地环境中成功启动sls offline start --httpPort 12012 -s local服务器。

但是这个命令的结果是error sls offline migrations --httpPort 12012 -s local

代码语言:javascript
运行
复制
  Serverless Error ---------------------------------------
 
  "migrations" is not a valid sub command. Run "serverless offline" to see a more helpful error message for this command.
 
  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Issues:        forum.serverless.com
 
  Your Environment Information ---------------------------
     Operating System:          linux
     Node Version:              14.4.0
     Framework Version:         1.75.1
     Plugin Version:            3.6.16
     SDK Version:               2.3.1
     Components Version:        2.32.0

如果我运行serverless migrations up,就会发生错误。

代码语言:javascript
运行
复制
Serverless: Setting up connections...
Serverless: Looking for pending migrations...
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): SELECT `name` FROM `SequelizeMeta` AS `SequelizeMeta` ORDER BY `SequelizeMeta`.`name` ASC;
Serverless: Applying pending migrations...
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): SELECT `name` FROM `SequelizeMeta` AS `SequelizeMeta` ORDER BY `SequelizeMeta`.`name` ASC;
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): SELECT `name` FROM `SequelizeMeta` AS `SequelizeMeta` ORDER BY `SequelizeMeta`.`name` ASC;
Serverless: Error while applying migrations
Serverless: Looking for migration that has problems...
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): SELECT `name` FROM `SequelizeMeta` AS `SequelizeMeta` ORDER BY `SequelizeMeta`.`name` ASC;
Serverless: Something wrong with 20200728165728-init.js

目前,DB是通过使用sequelize sync来更新的,它有时会锁定表。

代码语言:javascript
运行
复制
import Sequelize from 'sequelize';
import mysql2 from 'mysql2';

const db = new Sequelize(
  process.env.DB_NAME,
  process.env.DB_USERNAME,
  process.env.DB_PASSWORD,
  {
    omitNull: true,
    dialect: process.env.DB_DIALECT,
    dialectModule: mysql2,
    dialectOptions: {
        supportBigNumbers: true
    },
    host: process.env.DB_HOST,
});

let synced = false;
const getSequelize = () => {
    if (!synced) {
        db.sync({ alter: true })
          .then(() => {
              console.log(`Database & tables synchronised!`)
          });

        synced = true;
    }

    return db;
}

export default getSequelize();

这些是配置文件中包含的插件

代码语言:javascript
运行
复制
plugins:
  - serverless-webpack
  - serverless-offline
  - serverless-pseudo-parameters
  - serverless-prune-plugin
  - serverless-sequelize-migrations
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-30 06:28:25

解决方案非常简单,

serverless.yml文件中导入插件时,在导入主插件之前导入所有插件是非常重要的。

在本例中,serverless-sequelize-migrations是在serverless-offline之后导入的

因此,可行的解决方案是:

代码语言:javascript
运行
复制
plugins:
  - serverless-webpack
  - serverless-sequelize-migrations
  - serverless-offline
  - serverless-pseudo-parameters
  - serverless-prune-plugin

并使用next命令执行此迁移

代码语言:javascript
运行
复制
serverless migrations up
票数 0
EN

Stack Overflow用户

发布于 2020-07-29 04:06:26

看起来你把migrations拼错了

错误消息显示:

代码语言:javascript
运行
复制
"migratins" is not a valid sub command. Run "serverless offline" to see a more helpful error message for this command.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63141209

复制
相关文章

相似问题

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