更新和/或修复AppFog数据库的模式

我使用ExpressJS在NodeJS中创build了一个应用程序,我在AppFog上托pipe了我的应用程序,但是它工作正常,但是我在本地版本上做了一些更新,现在我想更新AppFog上的应用程序,但是我遇到了问题,在本地和现在更新我的模型,我无法更新我的AppFog数据库…

我想要做什么? 删除应用程序并再次更新? 我会在我的数据库中丢失所有的数据…

日志:

Error: ER_BAD_FIELD_ERROR: Unknown column 'tags' in 'field list' 

首先导出数据库以保持备份,以防万一这样不能按预期进行。

  1. af apps来获取af apps的数据库服务名称
  2. af export-service [service-name]获取备份的下载url

接下来将服务隧道到您的本地框。 注意这可以是一个小挑剔,所以给它一些尝试,如果需要的话。

  1. af tunnel [service-name]
  2. select你需要的连接选项。 选项“无”将输出可用于您最喜爱的数据库工具的凭据。 设置数据库连接到本地主机端口10000,并使用提供的数据库名称,用户名和密码。 选项“mysql”会自动连接到使用mysql cli的数据库。 closuresterminal窗口或退出af隧道命令将删除本地隧道,以便在更改时保持运行。 更多关于这里的隧道 。
 1: none <- this will let you connect using sequel pro 2: mysql <- to make manual tweeks 3: mysqldump 

最后根据需要修复数据库结构,以使您的应用程序正常工作,然后更新应用程序。


另外,将来你可能会使用像Sequelize这样的ORM,它具有非破坏性的数据库迁移,当应用程序启动后可以运行

在启动文件的早期某处:

 // 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(); }