我用 Ruby on Rails 制作了一个应用程序,现在我想托管它。但是,他们要求我使用 MySQL,并且我使用 sqLite3 进行设置。有什么办法可以将其转换为使用MySQL吗?
请您参考如下方法:
步骤0
为了安全起见,我建议在虚拟机中尝试一下这种技术。构建一个虚拟机,检查你的代码,这样你就可以省去很多心痛,并拥有一个安全的 Playground ,如果悲剧发生,你可以扔掉它。
步骤 1
制作数据库.yml 文件的备份副本。
(来自您的应用程序根目录)
cp config/database.yml config.database.yml.sqlite3
步骤 2
制作数据的备份副本
对于 Rails 3,安装 YAML DB gem:https://github.com/ludicast/yaml_db 通过运行
gem install yaml_db
然后添加到您的 Gemfile 中。
gem 'yaml_db'
对于 Rails 2.x,安装 YAML DB 插件:
脚本/插件安装 git://github.com/adamwiggins/yaml_db.git
运行转储任务
rake db:dump
步骤 3
更新您的 config/database.yml 文件。您会发现类似的条目
development:
adapter: sqlite3
database: db/development.sqlite3
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
timeout: 5000
将它们更改为
development:
adapter: mysql
encoding: utf8
reconnect: false
database: **myapp_development**
pool: 5
username: **root**
password: **supersecretpassword**
**socket: /opt/local/var/run/mysql5/mysqld.sock**
test:
adapter: mysql
encoding: utf8
reconnect: false
database: **myapp_test**
pool: 5
username: **root**
password: **supersecretpassword**
socket: **/opt/local/var/run/mysql5/mysqld.sock**
production:
adapter: mysql
encoding: utf8
reconnect: false
database: **myapp_production**
pool: 5
username: **root**
password: **supersecretpassword**
socket: **/opt/local/var/run/mysql5/mysqld.sock**
请务必根据您的平台更新星号包围的值!套接字值仅适用于使用 MacPorts 的 Mac OSX。大多数 Linux 版本不需要此值。
步骤 5
如果您在以下步骤中遇到一些错误,您可能需要安装 mysql 或 mysql2 gem:
sudo gem install mysql
或
sudo gem install mysql2
让 rake 创建您的数据库
rake db:create
rake db:schema:load
第 6 步
使用 YamlDb 将数据重新加载到 MySql
rake db:load