我使用ExpressJS在NodeJS中创建了一个应用程序,我在AppFog上托管了我的应用程序,但是,我在本地版本上做了一些更新,现在我想在AppFog上更新我的应用程序但是我遇到了问题,因为我在本地更新了我的模型,现在,我无法更新我的AppFog数据库......
我想做什么?删除应用程序并再次更新?我将丢失我数据库中的所有数据......
日志:
Error: ER_BAD_FIELD_ERROR: Unknown column 'tags' in 'field list'
答案 0 :(得分:2)
首先导出数据库以保留备份,以防万一没有按预期进行。
af apps
获取应用的数据库服务名称af export-service [service-name]
获取备份的下载网址接下来将服务隧道传送到您的本地方框。请注意,这可能有点挑剔,所以如果需要,可以尝试一下。
af tunnel [service-name]
1: none <- this will let you connect using sequel pro 2: mysql <- to make manual tweeks 3: mysqldump
最后根据需要修复数据库结构,以使您的应用程序正常运行,然后更新应用程序。
此外,将来您可能会使用像Sequelize这样的ORM,它具有非破坏性数据库迁移,可以在应用程序在af update
之后启动时运行
启动文件的早期某处:
// Sudo code. see af online docs on how to get the bound service creds
if (process.env.NODE_ENV == "production") {
var sequelize = new Sequelize(appfog.dbname, appfog.username, appfog.password, ...)
var migratorOptions = { path: process.cwd() + '/migrations' };
var migrator = sequelize.getMigrator(migratorOptions);
migrator.migrate();
}