更新和/或修复AppFog数据库的模式
我使用ExpressJS在NodeJS中创build了一个应用程序,我在AppFog上托pipe了我的应用程序,但是它工作正常,但是我在本地版本上做了一些更新,现在我想更新AppFog上的应用程序,但是我遇到了问题,在本地和现在更新我的模型,我无法更新我的AppFog数据库…
我想要做什么? 删除应用程序并再次更新? 我会在我的数据库中丢失所有的数据…
日志:
Error: ER_BAD_FIELD_ERROR: Unknown column 'tags' in 'field list'
首先导出数据库以保持备份,以防万一这样不能按预期进行。
-
af apps
来获取af apps
的数据库服务名称 -
af export-service [service-name]
获取备份的下载url
接下来将服务隧道到您的本地框。 注意这可以是一个小挑剔,所以给它一些尝试,如果需要的话。
-
af tunnel [service-name]
- 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(); }