遷移在使用Ubuntu,當我執行耙分貝亞馬遜的EC2:遷移爲:的ActiveRecord :: ConnectionNotEstablished爲Rails3中的MySQL數據庫耙:在EC2上
bundle exec rake db:migrate RAILS_ENV="production" --trace
我得到的錯誤的ActiveRecord :: ConnectionNotEstablished如下圖所示
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
rake aborted!
ActiveRecord::ConnectionNotEstablished
/usr/local/rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:316:in `retrieve_connection'
我可以登錄我的配置用戶名和密碼到mysql/database.yml文件 和數據庫是存在的。所以mysql正在運行,這不是問題。
我的config/database.yml文件看起來像:
production:
adapter: mysql2
encoding: utf8
reconnect: false
database: app_production
pool: 5
username: root
password: password
host: localhost
socket: /run/mysqld/mysqld.sock
下面是寶石列表我的寶石:
abstract (1.0.0)
actionmailer (3.0.3)
actionpack (3.0.3)
activemodel (3.0.3)
activerecord (3.0.3)
activeresource (3.0.3)
activesupport (3.0.3)
arel (2.0.10)
builder (2.1.2)
bundler (1.0.10 ruby)
cgi_multipart_eof_fix (2.5.0)
daemons (1.0.10)
erubis (2.6.6)
eventmachine (0.12.10)
fastthread (1.0.7)
gem_plugin (0.2.3)
i18n (0.6.0)
mail (2.2.19)
mime-types (1.17.2)
mongrel (1.2.0.pre2)
mysql2 (0.2.7)
polyglot (0.3.3)
rack (1.2.5)
rack-mount (0.6.14)
rack-test (0.5.7)
rails (3.0.3)
railties (3.0.3)
rake (0.9.2.2)
rmagick (2.13.1)
thin (1.2.7)
thor (0.14.6)
treetop (1.4.10)
tzinfo (0.3.31)
xmpp4r (0.5)
描述中connection_pool.rb的錯誤是在同一個地方發生的事情在這個post的答案中說,需要在ActiveRecord :: Base上建立連接。該代碼在connection_pool.rb中失敗,因爲它發送的klass = ActiveRecord :: Base沒有連接。所以,我想創建一個類似如下
require 'active_record'
class MyConnectionBase < ActiveRecord::Base
MyConnectionBase.establish_connection(
:adapter => "mysql2",
:host => "localhost",
:username => "<your database username>",
:password => "<your database password>",
:database => File.dirname(__FILE__) + "app_production"
)
self.abstract_class = true
end
然後我的所有車型的典範my_connection_base.rb繼承MyConnectionBase如下role.rb:
require 'my_connection_base'
class Role < MyConnectionBase
has_and_belongs_to_many :users
end
但我仍然得到的ActiveRecord :: ConnectionNotE在我嘗試運行遷移時建立。有什麼我需要做的Rails 3,以確保在執行遷移之前連接到mysql?
'/ run/mysqld/mysqld.sock'是MySQL套接字的實際位置嗎?上週我發現這個問題實際上是在'/ tmp/mysqld.sock'中。 –
@邁克爾 - 這是我檢查的第一件事情之一。實際的套接字是/var/run/mysqld/mysqld.sock,/run/mysqld/mysqld.sock是它的鏈接,即ls -l /run/mysqld/mysqld.sock給出:/ run/mysqld/mysqld。 sock - > /var/run/mysqld/mysqld.sock。這引起了一個問題,我如何檢查套接字是否正常工作? –
如果您可以在命令行上連接,則套接字可能正常工作。 –