部署 部署时的 production 数据库怎么处理?

richard020389 · 2013年04月11日 · 最后由 richard020389 回复于 2013年04月12日 · 2893 次阅读

在 ubuntu 上用 unicorn + mina 部署,部署完以后运行报错说没有找到 table(应该是没有生成数据库)。 回到 mina 的 deploy.rb 中把 invoke :'rails:db_migrate' 改成 invoke :'rails:db_migrate:force' 后可以运行,但是数据库是纯新的。。。

mina 好像每次都生成新的/release/n 文件夹,然后把 current 链上去,db 文件夹好像也在其中。总觉得每次都要新建数据库总不大靠谱,求问常规做法

你用的什么数据库?还有 mina 的 log 是什么,一块贴出来吧。不会生产环境用的是 sqlite 吧

@chunlea 数据库确实用的 sqlite(个人学习部署,不是什么实际项目)。mina 那边没有任何有意义的 log,invoke :'rails:db_migrate'的时候是 DB schema unchanged; skipping DB migration;invoke :'rails:db_migrate:force' 的时候就是正常的 migrate 的信息(create table 什么的)

#2 楼 @richard020389 你把 db 文件夹里面的 sqlite 数据库文件加入.gitignore 了吗?应该是你每次修改都进入了 git,然后部署的时候就产生了冲突吧,最好还是不要用 sqlite 作为生产环境,部署 postgresql 吧,还是很简单的。

@chunlea sqlite 数据库文件加入.gitignore 了(我的理解是,部署完的时候会没有 table,因为数据库文件没有从 git clone 下来)。postgresql 的数据库文件不是放在 db 文件夹里面的吗?

@chunlea 刚才换 postgresql 试了一下,终于可以了。非常感谢~!果然 postgresql 不是像 sqlite 那样把数据文件放在 db 文件夹下面的。看来我数据库的知识还是需要恶补下啊~

#4 楼 @richard020389 postgresql 的数据库文件不是存放在 db 文件夹里的。我知道应该怎么做了,你可能需要将 sqlite 数据库文件加入.gitignore 文件,然后需要在服务器上创建数据库文件,放在 shared 文件夹下面,然后在 mina 里面创建一个软连接就好了。

@chunlea 谢谢。基本思路已经比较清楚了。我以后发布还是直接用 pg 或者 mysql 吧,省不少事情。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号