如何解决错误:迁移MD5校验和失败[1] npm ERR!代码ELIFECYCLE npm ERR! errno 1

时间:2020-08-25 15:14:08

标签: javascript database npm migration

我一直遇到这个错误

noteful-json-server@0.0.1 migrate /Users/jessicayiphome/Desktop/Projects/noteful-client-db-master-17.19
> postgrator --config postgrator-config.js

[11:04:50 AM] version of database is: 2
[11:04:50 AM] migrating up to 2
[11:04:50 AM] verifying checksum of migration 001.do.create_folders_table.sql
Error: MD5 checksum failed for migration [1]
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! noteful-json-server@0.0.1 migrate: `postgrator --config postgrator-config.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the noteful-json-server@0.0.1 migrate script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/jessicayiphome/.npm/_logs/2020-08-25T15_04_50_228Z-debug.log

当我运行npm run migrate时 这是我的package.json:

"scripts": {
"test": "mocha --require test/setup.js",
"dev": "nodemon src/server.js",
"migrate": "postgrator --config postgrator-config.js",
"migrate:test": "env NODE_ENV=test npm run migrate",
"migrate:production": "heroku run npm run migrate",
"start": "node src/server.js",
"deploy": "git push heroku master",
"postdeploy": "npm run migrate:production"

这是我的postgrator-config.js

'use strict';
require('dotenv').config();

module.exports = {
  "migrationDirectory": "migrations",
  "driver": "pg",
  "connectionString": process.env.DATABASE_URL
};

2 个答案:

答案 0 :(得分:0)

什么

错误告诉您迁移脚本001.do.create_folders_table.sql自首次创建以来已发生更改。要纠正该错误,您需要确保文件的内容与脚本首次运行时的内容完全相同。您可以使用 git 签出该文件的旧版本吗?

为什么

校验和是一串称为 hash 的字符。通过使用脚本作为名为md5的算法的输入来创建它。根据您的计算机,您可能拥有md5的命令行版本,可以自己尝试。尝试md5 001.do.create_folders_table.sql,您将看到输出。可能类似于:ce662acdd491b642c6db551983f878cd

Postgrator 存储这些md5哈希值。为了确保每次运行迁移时数据库都处于同一状态,它将通过md5放置脚本并将结果与​​存储的版本进行比较。如果当前版本和旧版本不同,则必须更改脚本,这意味着运行迁移是不安全的。

答案 1 :(得分:0)

我收到了同样的错误,对我有用的是 运行npm migration-0。 然后运行npm migration,将其设置为升级后的迁移。