Skip to content

Egg.js 技巧 问题集合

仲灏2023-09-17约 1 分钟

<div style="display: none;" hidden="true" aria-hidden="true" data-nosnippet>Are you an LLM? You can read better optimized documentation at /pages/3de397.md for this page in Markdown format</div>

Sequelize

sequelize-cli

需要 Migrations 来帮我们管理数据结构的变更(在项目的演进过程中,每一个迭代都有可能对数据库数据结构做变更,怎样跟踪每一个迭代的数据变更,并在不同的环境(开发、测试、CI)和迭代切换中,快速变更数据结构呢?)

sequelize 提供了 sequelize-cli 工具来实现 Migrations

javascript
sequelize <command>

Commands:
  sequelize db:migrate                        Run pending migrations
  sequelize db:migrate:schema:timestamps:add  Update migration table to have timestamps
  sequelize db:migrate:status                 List the status of all migrations
  sequelize db:migrate:undo                   Reverts a migration
  sequelize db:migrate:undo:all               Revert all migrations ran
  sequelize db:seed                           Run specified seeder
  sequelize db:seed:undo                      Deletes data from the database
  sequelize db:seed:all                       Run every seeder
  sequelize db:seed:undo:all                  Deletes data from the database
  sequelize db:create                         Create database specified by configuration
  sequelize db:drop                           Drop database specified by configuration
  sequelize init                              Initializes project
  sequelize init:config                       Initializes configuration
  sequelize init:migrations                   Initializes migrations
  sequelize init:models                       Initializes models
  sequelize init:seeders                      Initializes seeders
  sequelize migration:generate                Generates a new migration file      [aliases: migration:create]
  sequelize model:generate                    Generates a model and its migration [aliases: model:create]
  sequelize seed:generate                     Generates a new seed file           [aliases: seed:create]

Options:
  --version  Show version number                                                  [boolean]
  --help     Show help                                                            [boolean]

Please specify a command
# 升级数据库
npx sequelize db:migrate
# 如果有问题需要回滚,可以通过 `db:migrate:undo` 回退一个变更
# npx sequelize db:migrate:undo
# 可以通过 `db:migrate:undo:all` 回退到初始状态
# npx sequelize db:migrate:undo:all

错误处理

  • 2020-10-23 15:20:10,104 ERROR 124768 [-/127.0.0.1/-/8ms POST /api/v1/video] nodejs.SequelizeDatabaseError: Incorrect string value: '\xE5\x8F\x8D\xE5\xAF\xB9...' for column 'introduce' at row 1

    at Query.formatError (D:\Code\Work\wxwl-resource-share\node_modules_sequelize@6.3.5@sequelize\lib\dialects\mysql\query.js:239:16)

    at Query.run (D:\Code\Work\wxwl-resource-share\node_modules_sequelize@6.3.5@sequelize\lib\dialects\mysql\query.js:54:18)

    at processTicksAndRejections (internal/process/task_queues.js:97:5)

name: "SequelizeDatabaseError"

parent: {"code":"ER_TRUNCATED_WRONG_VALUE_FOR_FIELD","errno":1366,"sqlState":"HY000","sqlMessage":"Incorrect string value: '\xE5\x8F\x8D\xE5\xAF\xB9...' for column 'introduce' at row 1","sql":"INSERT INTO videos (id,category_id,title,introduce,detail,create_date) VALUES (DEFAULT,?,?,?,?,?);","parameters":[1,"test11","tess反对t","231231","2020-10-23 07:20:10"]}

original: {"code":"ER_TRUNCATED_WRONG_VALUE_FOR_FIELD","errno":1366,"sqlState":"HY000","sqlMessage":"Incorrect string value: '\xE5\x8F\x8D\xE5\xAF\xB9...' for column 'introduce' at row 1","sql":"INSERT INTO videos (id,category_id,title,introduce,detail,create_date) VALUES (DEFAULT,?,?,?,?,?);","parameters":[1,"test11","tess反对t","231231","2020-10-23 07:20:10"]}

sql: "INSERT INTO videos (id,category_id,title,introduce,detail,create_date) VALUES (DEFAULT,?,?,?,?,?);"

parameters: [1,"test11","tess反对t","231231","2020-10-23 07:20:10"]

pid: 124768

hostname: DESKTOP-FUCU627