1

我試圖通過以下this tutorial將我的應用程序部署到Elastic Beanstalk。部署的rails應用程序彈性beanstalk無法連接到RDS

如果我使用splite3,該應用可以正常工作,但我無法將應用連接到RDS。

我在Gemfile中添加了group :production do gem 'mysql2' end,此代碼添加到config/database.yml

production: 
    adapter: mysql2 
    encoding: utf8 
    database: <%= ENV['RDS_DB_NAME'] %> 
    username: <%= ENV['RDS_USERNAME'] %> 
    password: <%= ENV['RDS_PASSWORD'] %> 
    host: <%= ENV['RDS_HOSTNAME'] %> 
    port: <%= ENV['RDS_PORT'] %> 

我在Elastic Beanstalk console中添加了RDS。

production.log顯示錯誤,表示數據庫連接失敗。

------------------------------------- 
/var/app/support/logs/production.log 
------------------------------------- 
I, [2014-02-09T16:01:56.520967 #29379] INFO -- : Started GET "/" for xxx.xxx.xxx.xxx at 2014-02-09 16:01:56 +0000 
I, [2014-02-09T16:01:56.620738 #29379] INFO -- : Processing by PostsController#index as HTML 
E, [2014-02-09T16:01:56.629835 #29379] ERROR -- : Mysql2::Error: Table 'ebdb.posts' doesn't exist: SELECT `posts`.* FROM `posts` 
I, [2014-02-09T16:01:56.630802 #29379] INFO -- : Rendered posts/index.html.erb within layouts/application (4.3ms) 
I, [2014-02-09T16:01:56.631068 #29379] INFO -- : Completed 500 Internal Server Error in 10ms 
F, [2014-02-09T16:01:56.633962 #29379] FATAL -- : 
ActionView::Template::Error (Mysql2::Error: Table 'ebdb.posts' doesn't exist: SELECT `posts`.* FROM `posts`): 

eb status表明是這樣的。

URL  : myAppURL 
Status  : Ready 
Health  : Green 

RDS Database: AWSEBRDSDatabase | myDatabaseURL:port 

也許我錯過了一些非常基本的。我該怎麼辦才能解決這個問題?

+0

你連接到RDS爲您的應用程序會在啓動時崩潰,如果你不能。它只是沒有找到表格。你能連接到RDS並運行「use yourdatabasename;」和「展示桌子」;並看看?也許只是在生產數據庫上缺少遷移? –

+0

您是否正在使用由EB流程創建的RDS實例,或者您是否將EB應用程序連接到已有的RDS數據庫? –

+0

嘿!我有同樣的問題...我已經設法連接到我的RDS數據庫與SQL的Sequel客戶端,並觀察到數據庫'ebdb'存在,但不包含任何表格或內容... ...我相信這可能也是這種情況,所以它必須是rails遷移由於某種原因無法正常運行的問題......任何想法如何檢查它們是否正在運行,手動運行它們,或者查看db_migrate命令的輸出已完成在彈性豆莖環境中? – Robertibiris

回答

1

如果您的數據庫未命名ebdb你可以在YAML文件進行硬編碼數據庫名稱:

production: 
    adapter: mysql2 
    encoding: utf8 
    database: my_database_name 
    username: <%= ENV['RDS_USERNAME'] %> 
    password: <%= ENV['RDS_PASSWORD'] %> 
    host: <%= ENV['RDS_HOSTNAME'] %> 
    port: <%= ENV['RDS_PORT'] %> 
相關問題