RailsのDBをsqliteからmysqlに変更する
OS
vagrant@vagrant:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.6 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.6 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
作業
Gemfile 修正
gem 'sqlite3', '~> 1.3.6' # 削除
gem 'mysql2', '>= 0.4.4', '< 0.6.0' # 追加
config/database.yml の修正(修正行数多いからdiffだけ
~/p/v/g/d/gurumyu ❯❯❯ git diff config/database.yml
diff --git a/config/database.yml b/config/database.yml
index 1c1a37c..7e3ad2d 100644
--- a/config/database.yml
+++ b/config/database.yml
@@ -1,25 +1,35 @@
-# SQLite version 3.x
-# gem install sqlite3
+# MySQL. Versions 5.1.10 and up are supported.
#
-# Ensure the SQLite 3 gem is defined in your Gemfile
-# gem 'sqlite3'
+# Install the MySQL driver
+# gem install mysql2
+#
+# Ensure the MySQL gem is defined in your Gemfile
+# gem 'mysql2'
+#
+# And be sure to use new-style password hashing:
+# https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
#
default: &default
- adapter: sqlite3
- pool: 5
- timeout: 5000
+ adapter: mysql2
+ encoding: utf8
+ pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
+ username: root
+ password:
+ socket: /var/run/mysqld/mysqld.sock
development:
<<: *default
- database: db/development.sqlite3
+ database: [データベース名]_development
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
- database: db/test.sqlite3
+ database: [データベース名]_test
production:
<<: *default
- database: db/production.sqlite3
+ database: [データベース名]
+ username: [ユーザー名]
+ password: <%= ENV['GAMBARASE_DATABASE_PASSWORD'] %>
mysql server / client のインストール
$ sudo apt-get install mysql-server mysql-client libmysqlclient-dev
sudo 無しでログインできない場合、mysql client内でこれ
$ sudo mysql -u root
mysql> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql>
railsコマンドでデータベース/テーブル作成
$ rake db:create
$ rails db:migrate
経緯
チュートリアルな感じで作ってたrails アプリを公開を目指して作り変えたいなってことでsqliteからmysqlに変更したくなったというお話。サービス公開を目指すってだけで色々変わってきて面倒だなあと
最後に
この手順内容で詰まった。。。って方がいたらコメントなどで教えて下さい。加筆等検討します。