我在Ruby on Rails中创建了一个应用程序,现在我希望将其托管.但是,它们要求我使用MySQL并使用sqLite3进行设置.有没有办法将其转换为使用MySQL?
mar*_*lly 117
为了安全起见,我建议在虚拟机中尝试一下这种技术.为自己节省一大堆心痛,建立一个虚拟机,检查你的代码,并有一个安全的游乐场,如果发生悲剧,你可以扔掉它.
制作database.yml文件的备份副本.
(从您的应用程序根目录)
cp config/database.yml config.database.yml.sqlite3
制作数据的备份副本
对于Rails 3,安装YAML DB gem:https://github.com/ludicast/yaml_db
对于Rails 2.x安装YAML DB插件:
script/plugin install git://github.com/adamwiggins/yaml_db.git
运行转储任务
rake db:dump
更新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
Run Code Online (Sandbox Code Playgroud)
将它们更改为
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**
Run Code Online (Sandbox Code Playgroud)
请务必根据您的平台更新asterix包围的值!套接字值仅适用于使用MacPorts的Mac OSX.大多数版本的linux都不需要这个值.
如果您在以下步骤中遇到一些错误,则可能必须安装mysql gem:
sudo gem install mysql
Run Code Online (Sandbox Code Playgroud)
让rake创建你的数据库
rake db:create
rake db:schema:load
Run Code Online (Sandbox Code Playgroud)
使用YamlDb将数据重新加载到MySql中
rake db:load
只要您没有编写任何在sqlLite3中运行的SQL语句而不是MySQL(如果您的所有数据库访问都是通过ActiveRecord和ActiveRecord迁移,那么您将无法使用),那么您需要做的就是更改数据库中的数据库适配器.yml配置文件.
myproject user$ cd
user $ rails new myproject -d mysql
Run Code Online (Sandbox Code Playgroud)
对所有问题说“不”,但Overwrite .../myproject/config/*database.yml*? (enter "h" for help) [Ynaqdh]要说“是”。
| 归档时间: |
|
| 查看次数: |
40985 次 |
| 最近记录: |