在我的团队中,我们正在开发一个可以通过不同平台访问的系统,例如 Ruby on Rails 网站、桌面 Java 应用程序、Android 以及 iOS 应用程序。
我们的中央 MySQL 数据库在服务器上远程运行,可以通过 PHPMyAdmin(和 ControlPanel)进行访问。
虽然其他平台之间的连接运行良好,但我很难将 Rails 应用程序连接到数据库。我想复制数据库结构(表、索引、列),以便可以访问 Rails 中的数据库,就像访问本地创建的模型中的数据一样(例如 Customer.find(name: "Florian") )。
有办法实现这一点吗?我尝试了一些方法,例如更改我的 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
同一个 block 也在测试
和生产
下。在我的 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 修订版 51636)[x86_64-darwin15]
。
谢谢!
编辑:
谢谢大家,终于修复了我的database.yml 文件并运行rake db:schema:dump
完成了。但是如何将 schema.rb 转换为本地可用的 ActiveRecord::Model ?
最佳答案
在 Gemfile 中使用它
gem 'mysql2', '~> 0.3.18'
config/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'
关于mysql - Rails 4 连接远程 MySQL 数据库并拉取数据库结构以便于访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34489181/