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

Fighting_3 · June 02, 2017 · Last by Fighting_3 replied at June 02, 2017 · 1489 hits

执行

rails db:migrate RAILS_ENV=production

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

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

Reply to suffering

首先谢谢大大帮助我。我刚才想把数据库信息移植到 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'

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

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

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

Reply to suffering

我先把我的 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 了,也指定用户名密码了,所以它报这个错我有点看不明白。

Reply to lingceng

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

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

Reply to suffering

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

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

Reply to suffering

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

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

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

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

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

Reply to suffering

好,谢谢啊

You need to Sign in before reply, if you don't have an account, please Sign up first.