更新和/或修复AppFog数据库的架构

时间:2013-04-23 01:50:14

标签: javascript node.js express appfog

我使用ExpressJS在NodeJS中创建了一个应用程序,我在AppFog上托管了我的应用程序,但是,我在本地版本上做了一些更新,现在我想在AppFog上更新我的应用程序但是我遇到了问题,因为我在本地更新了我的模型,现在,我无法更新我的AppFog数据库......

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

日志:

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

1 个答案:

答案 0 :(得分:2)

首先导出数据库以保留备份,以防万一没有按预期进行。

  1. af apps获取应用的数据库服务名称
  2. af export-service [service-name]获取备份的下载网址
  3. 接下来将服务隧道传送到您的本地方框。请注意,这可能有点挑剔,所以如果需要,可以尝试一下。

    1. af tunnel [service-name]
    2. 选择您需要的连接选项。选项"无"将输出可与您喜欢的数据库工具一起使用的凭据。设置与 localhost 端口 10000 的数据库连接,并使用提供的dbname,username和password。选项" mysql"将使用mysql cli自动连接到db。关闭终端窗口或退出af tunnel命令将丢弃本地隧道,以便在进行更改时保持其运行。 More on af tunnel here
    3. 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();
      }