Rails 4连接到远程MySQL数据库并提取数据库结构以便于访问

时间:2015-12-28 07:14:23

标签: mysql ruby-on-rails database activerecord

在我的团队中,我们正在开发一个可以通过不同平台访问的系统,例如Ruby on Rails网站,桌面Java应用程序和Android以及iOS应用程序。 我们的中央MySQL数据库在服务器上远程运行,可以通过PHPMyAdmin(和ControlPanel)访问。

虽然其他平台之间的连接运行良好,但我很难将我的Rails应用程序连接到数据库。我想复制数据库结构(表,索引,列),以便我可以访问Rails中的数据库,就像我从本地创建的模型访问数据一样(例如,Customer.find(name:"弗洛里安"))。

有没有办法实现这个目标?我尝试了几件事,例如更改我的database.yml文件,但是当我运行某些内容时,例如rails c,它会显示:

/Users/florianpfisterer/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mysql2-0.4.2/lib/mysql2.rb:31:in `require': dlopen(/Users/florianpfisterer/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/mysql2-0.4.2/mysql2/mysql2.bundle, 9): Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.18.dylib
  Referenced from: /Users/florianpfisterer/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/mysql2-0.4.2/mysql2/mysql2.bundle
  Reason: image not found - /Users/florianpfisterer/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/mysql2-0.4.2/mysql2/mysql2.bundle (LoadError)
  ...

我的`database.yml'档案:

development:
  adapter: mysql2
  encoding: utf8
  host: <host-IP>
  username: <username>
  password: <password>
  port: <port>
  database: <database>
  pool: 5
  timeout: 5000

同一个区块也位于testproduction之下。在我的Gemfile中,我包括:

gem 'mysql2'

我正在运行Mac OS X 10.11.2 El Capitan,服务器是Linux系统。我的Rails版本是Rails 4.2.4和Ruby ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin15]

谢谢!

修改 谢谢大家,最后修复了我的database.yml文件并运行rake db:schema:dump做了。但是如何将schema.rb转换为本地可用的ActiveRecord::Model

2 个答案:

答案 0 :(得分:2)

在Gemfile中使用

gem 'mysql2', '~> 0.3.18'

<强>配置/ database.yml的

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  socket: /var/run/mysqld/mysqld.sock
  username:  <%= ENV['DATABASE_USER'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>

插入.bashrc

export DATABASE_USER='root'

export DATABASE_PASSWORD='123'

答案 1 :(得分:0)

将库路径添加到.bash_profile文件中:

MYSQL=/usr/local/mysql/bin
export PATH=$PATH:$MYSQL
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

问题不在于连接,而在于加载mysql本身。