経緯
herokuのエラーで何度か storage errorが出ていた。
接続すると、エラー画面になっていて、操作が効かない感じ。
エラーの内容から、おそらく、DBの容量の問題と思う。
けど、中身をcsvでダンプすると100MBほどしかないのだが...
とりあえず、herokuのプラン更新をしようにも、5.7はもうサポートされていないようなので、今のうちにやっておくことにした。punchプランのClearDBでした。
経験値にもなるだろうし、いずれ容量増えたら必要なことなので、やることにした。
まず手元から
qiita.com
brew update
brew install mysql
をする。
==> Summary
🍺 /opt/homebrew/Cellar/mysql/8.3.0: 323 files, 312.5MB
とのこと。入ってそう。
ということで、手元で8が起動するか試していく。
$ ps ax | grep mysql
5157 s001 S+ 0:00.00 grep mysql
sakurawi@Wi-MacBook-Air: ~/workspace/XXX_APP (master *=)
$ mysql --version
mysql Ver 14.14 Distrib 5.7.44, for osx10.18 (x86_64) using EditLine wrapper
sakurawi@Wi-MacBook-Air: ~/workspace/XXX_APP (master *=)
$ mysql --version
mysql Ver 14.14 Distrib 5.7.44, for osx10.18 (x86_64) using EditLine wrapper
sakurawi@Wi-MacBook-Air: ~/workspace/XXX_APP (master *=)
$ brew uninstall mysql@5.7
Uninstalling /opt/homebrew/Cellar/mysql@5.7/5.7.44_1... (321 files, 233.9MB)
sakurawi@Wi-MacBook-Air: ~/workspace/XXX_APP (master *=)
消えないので、アンインストールした
$ mysql --version
mysql Ver 8.3.0 for macos13.6 on arm64 (Homebrew)
お、よさそう。
$ mysql.server start
Starting MySQL
SUCCESS!
スタートもできるぽい。
railsを動かしていく
rails serverすると当然動かない。
bundle updateしてみる
rails server する。
お、起動するぞ。
え、ぜんぜんうごくやん。
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.44 |
+-----------+
1 row in set (0.00 sec)
いや変わってなさそう。
$ mysql.server restart
Shutting down MySQL
.... SUCCESS!
Starting MySQL
.... SUCCESS!
リスタートさせてみる
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.3.0 |
+-----------+
1 row in set (0.00 sec)
mysql>
お、切り替わった。
rails consoleからもみてみる
[1] pry(main)> ActiveRecord::Base.connection.execute('SELECT version()').to_a
(0.1ms) SELECT version()
=> [["8.3.0"]]
いいやん。
sequel Proが見れなくなる。
ググる。
MySQL8.0.x に Sequel Pro で接続する #MySQL - Qiita
なんと、夜版じゃないと8.0がみれないとのこと。
なんじゃそら。
ローカルは秒で動くようになったので、
じゃ、pushしてみる。
herokuのプランを変える
というか、mysql 8に対応したアドオンを付け直す。
新しくインスタンスを置くイメージかな。
新しい方のDBのデータみたい。
が、heroku configを叩いても、繋いでいる方がでる。
まあ当然すな。
あ、
$ heroku addons
Add-on Plan Price Max Price State
────────────────────────────────── ────── ──────────── ─────────── ───────
cleardb (cleardb-horizontal-00000) punch ~$0.014/hour $9.99/month created
└─ as CLEARDB_DATABASE
cleardb (cleardb-fitted-999999) punch8 ~$0.014/hour $9.99/month created
└─ as CLEARDB_ONYX
でてましたわ。
情報を
heroku config:set DATABASE_URL='mysql2://username:password@hostname/database_name?reconnect=true'
でupdateする
他のdbの環境変数も、向くように変更。
herokuで rails db:createする
D, [2024-02-22T05:06:39.800007 #2] DEBUG -- : (18.1ms) CREATE DATABASE `heroku_bdd258af7170eb8` DEFAULT CHARACTER SET `utf8mb4`
Database 'heroku_bdd258af7170eb8' already exists
ActiveRecord::StatementInvalid (Mysql2::Error: Table 'heroku_bdd258af7170eb8.users' doesn't exist):
となるので、migrateする。
無事走る。
動いた!
データをインポートする
ローカルにダンプしておいてものをエクスポート、
すぐに本番DBにインポートする
だいじょうぶそう
個人アプリなので、以上でよさそう。
ただ、デフォルトの文字コードなどの問題はありそうなので、その辺もチェックをしておく。
その後
異常がなければ、add-onは消してしまってよさそう。
自動採番
なぜか、 3になっている。
mysql> SHOW VARIABLES LIKE 'auto_increment_increment';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 3 |
+--------------------------+-------+
1 row in set (0.19 sec)
なおす。
前に10になっていたのは、直接イジってつじつまを勝手にあわせてくれた説。
今回、3じゃないと最後のものと称号したときにおかしいからか。
いや、と思ったけど、デフォっぽいので、放置することにする。
参考URL
https://zenn.dev/hiro1111/articles/bf0111ed763485