Articles of 数据库迁移

如何在迁移文件中logging函数(knex.js)

我一直在想如何在迁移文件中写下函数。 理想情况下,它应该与我们正在做的方法完全相反。 现在假设我写up函数来删除列上的unique约束,向表中添加了一些新的行(具有重复的数据),现在我想回滚迁移。 理想情况下,我会写下方法来在列上再次添加唯一约束,但是迁移不会因为表包含重复数据而回滚。 所以我的问题是 – 在这种情况下该怎么办? 如何在迁移中写下函数? 在这种情况下,我可以保持downfunction吗? 谢谢。

我应该在服务器启动时运行所有的后续迁移吗?

我对Sequelize中如何处理迁移有点困惑。 它在文档中被告知 migrator.migrate …将执行您的未决迁移中的所有up方法 挂起是否意味着Sequelize跟踪哪些迁移已经在手头的数据库上运行,哪些没有在某些永久存储中? 如果是这样,是否意味着我应该在应用程序启动时加载迁移文件夹中的所有迁移并尝试运行它们? 如果没有,最好的做法是跟踪哪些迁移应该在当前服务器上运行?

在现有的表中添加新的列

我有一个数据库中的表,现在我想添加两个新的列。 我使用MYSQL cmd line更改了表格,并将新添加的列添加到Sequelize模型中。 但是,当我触发插入查询,它仍然触发与以前的字段的查询,并没有把新添加的列添加到它。 这里是我的数据模型: var Observation = sequelize.define('observation_details', { obv_id: { type: Sequelize.INTEGER, primaryKey: true }, obv_source: Sequelize.STRING, obv_waveband: Sequelize.INTEGER, prpsl_id: Sequelize.INTEGER, obv_ra: Sequelize.DOUBLE, //newly added column obv_dec: Sequelize.DOUBLE // newly added column }, { tableName: 'observation_details', timestamps: false }); 这里在表obv_ra和obv_dec已经添加..! 这是插入查询: Observation.create({ obv_source: req.body.obvDetails[i].source, obv_waveband: req.body.obvDetails[i].waveband, prpsl_id: proposalId, obv_ra: req.body.obvDetails[i].ra, obv_dec: req.body.obvDetails[i].dec […]

NoRel DB有一个DB迁移系统吗?

我正在与节点js和我必须执行我的数据库的第一个设置。 我将要使用一个noSQL数据库引擎。 我必须执行我的创build表,我认为有一个迁移系统跟踪结构变化是很好的。 或者甚至可能只是最初的数据库结构。 但我也认为noSQL大多是无模式的。 (除主要指标外) 所以我想知道如果我正在寻找没有多less意义的东西,或者如果周围已经有了像上面这样的方法…

自动Db迁移(MysQl)

我在angular.js和node.js中做了一个项目,它有三个不同的环境(开发,testing和产品),每个环境都有不同的数据库(Mysql)。我的问题涉及到数据库迁移, 目前的 Db迁移(从开发到testing/产品)正在以某种方式进行 使用db差异化工具比较两个数据库,并创build一个sql文件,其中包含需要执行的更改(查询)到另一个数据库 手动执行所有查询到数据库(testing/产品) 我需要的: 我想通过某种方式使用任何工具来自动执行这些Db迁移(上述过程) 需要对两个数据库(dev和product)进行比较,并将这些更改保存到一个文件中,并将这些更改执行到数据库(总Db同步),方法是在命令行提示符下运行代码。 我已经阅读了有关flyway和knex 。 但不知道哪个工具可以用来达到我的要求。 任何人都可以build议任何免费的工具,可以用来自动化数据库迁移过程,或任何替代过程来实现这些要求。

有没有办法改变mongoDB结构(从嵌套/embedded文档到对象引用列表),同时保持数据?

我有一个mongoDB数据库,由nodejs通过mongoose使用,它涉及嵌套/embedded式文档,如下所示: "people" : [ {"name" : "james", "_id": ObjectId("randomrandom1")}, {"name" : "arianna","_id": ObjectId("randomrandom2")}, {"name" : "kyle","_id": ObjectId("randomrandom3")} ] 我需要改变结构,所以我有单独的“人”文件,人们将包含一个人的ObjectId的数组: "people" : [{type:mongoose.Schema.Types.ObjectId, ref: 'Person'}] 每个人的文件都会包含詹姆斯,阿里安娜和凯尔的信息 – 这样我就可以在他们需要的时候填充他们。 我需要在维护已经input的文档的同时更改数据库结构。 有什么办法可以做到这一点?

用knexjs创buildangular色

我是PostgreSQL和节点的新手。 我正在使用knex.js库。 我需要创buildangular色并将其分配给在PostgreSQL中创build的每个表。 我不知道我怎么能做到这一点。 是否在桌面迁移时完成? 或者我可以在迁移之后做到这一点? 如果是这样,我该怎么办呢?

使用node.js运行数据库迁移(mongodb)

我正在寻找一个节点模块来进行mongo数据库迁移。 到目前为止,我发现了mongo-migrate ,但是还不够强大。 (比没有好,但我需要更多,我习惯于使用Ruby的迁移,这真的很强大!) 我几个星期前发现了另外一个,function强大但是不处理mongoDb,只能用MySQL,PostGre等等。 你知道一个模块或什么可以帮助我吗? 我的意思是,我不是第一个想要处理数据库迁移的人,你怎么处理这个问题? 我的项目会很大,我需要控制。 这里是我迄今为止所做的一个例子: * 0010-init_category_table.js * var mongodb = require('mongodb'); exports.up = function(db, next){ var documentName = 'category'; var collection = mongodb.Collection(db, documentName); var index; var indexOptions; /** * Create indexes. */ index = { "code": 1 }; indexOptions = { unique: true }; collection.ensureIndex( index, {unique: true, w: […]

续集迁移失败(postgres)

我正在尝试使用postgresql与我的节点应用程序使用sequelize。 但是我不能使它工作。 当我运行sequelize -m我得到这个输出: Loaded configuration file "config/config.json". Using environment "development". Running migrations… 20130916100313-create-table-usuarios.js Completed in 21ms events.js:74 throw TypeError('Uncaught, unspecified "error" event.'); ^ TypeError: Uncaught, unspecified "error" event. at TypeError (<anonymous>) at EventEmitter.emit (events.js:74:15) at null.<anonymous> (/home/alejo/workspace/cloudlogger/api/node_modules/sequelize/lib/migrator.js:95:44) at EventEmitter.emit (events.js:98:17) at module.exports.finish (/home/alejo/workspace/cloudlogger/api/node_modules/sequelize/lib/query-chainer.js:138:30) at exec (/home/alejo/workspace/cloudlogger/api/node_modules/sequelize/lib/query-chainer.js:92:16) at onError (/home/alejo/workspace/cloudlogger/api/node_modules/sequelize/lib/query-chainer.js:72:11) at EventEmitter.emit (events.js:95:17) at /home/alejo/workspace/cloudlogger/api/node_modules/sequelize/lib/migration.js:65:19 […]

如何在运行序列化迁移时打印原始查询?

我需要打印在迁移正在运行时执行的原始查询。 任何想法如何做到这一点? 我使用–migrate选项来运行脚本。