Rails rails 数据库迁移到 production 模式时出错

Fighting_3 · 发布于 2017年06月02日 · 最后由 Fighting_3 回复于 2017年06月02日 · 292 次阅读
96

执行

rails db:migrate RAILS_ENV=production

时,报错,说我数据库连接被拒绝

共收到 11 条回复
709

开发模式当然是这样的. 如果不出意外的话是你希望通过serverdomain.com:3000的方式看到你的服务吧. 可以考虑将之作为后台服务. 比如说 rails server &. 但是这个也不会长久, 所以可以使用nohup. 如nohup rails server &.这样可以保证你退出ssh后也会一直运行. 关于nohup, 可以看这里https://en.wikipedia.org/wiki/Nohup. 但是你这样并不是好的做法. 在server端跑development模式是没有意义的.

96
709suffering 回复

首先谢谢大大帮助我。我刚才想把数据库信息移植到production模式下,但是老是报错,说我数据库连接失败,具体信息如下:

[root@localhost shop]# rails db:migrate RAILS_ENV=production --trace          
** Invoke db:migrate (first_time)          
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:migrate
rails aborted!
Mysql2::Error: Access denied for user ''@'localhost' to database 'shop_production'

但是我开发模式下是能够连接数据库的啊,不明白了

5929

数据库报错要看看database.yml有没有正确配置用户名密码什么的,本地可以可能是本地的数据库不需要密码

709

但是看报错, 连用户名也没有指定. 本地之所以不需要密码. 是因为本地用的sqlite3吧.

96
709suffering 回复

我先把我的database.yml给你看下

default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: root
  socket: /var/lib/mysql/mysql.sock

development:
  <<: *default
  database: shop_development

production:
  <<: *default
  database: shop_production
  username: shop
  password: <%= ENV['SHOP_DATABASE_PASSWORD'] %>

我就是在本地操作到,没有在server端弄。我本地已经修改成mysql了,也指定用户名密码了,所以它报这个错我有点看不明白。

96
5929lingceng 回复

我都是在本地操作的啊,用户名密码配置了,数据库也指定了。。。

709

你确定你在database里创建user shop, 并且grant了access permission?

96
709suffering 回复

哦哦,我以为这里rails会自行帮我创建用户并且赋权限。。。。是要哇自己创建用户然后赋权限是吗?我去试试。。。

原来是这样😂 好了,谢谢大哥。

96
709suffering 回复

大哥,我已经转换到生产模式了,但是有两个问题想请问一下: 1.

production:
   secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

这里我把key存到环境变量里,再在项目中取,就不行,直接明文写,就OK,可能时哪里错了?

2.还是之前的老问题,我生产模式也要用 nohup rails s & 命令让一个进程跑服务才能保持服务不关闭吗?常规的做法是怎样的。 (因为我远程连接服务器,直接进项目开启服务,rails s -e production,命令行就锁住了,如果要退出远程连接,就必须要ctrl+c停止服务啊。)

709

在论坛里找一个capistrano的帖子了解一下server deploy的问题. 再去找一个dotenv的帖子了解一下env配置的问题.

96
709suffering 回复

好,谢谢啊

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