20210115のMySQLに関する記事は3件です。

heroku rake db:migrateが失敗してエラーが出た時の対処

プログラミング初心者で勉強中の身ですが、ググってもなかなか情報が出なかったので報告します。

環境

Mac OS X
Ruby: 2.7.1
Rails: 6.0.3.4
heroku stack: heroku-20(エラーが出た時)
DB: MYSQL

起こったこと

https://qiita.com/murakami-mm/items/9587e21fc0ed57c803d0
こちらの記事を参考にherokuへのデプロイを試みたところ、

console
$ heroku rake db:migrate

を実行した時に

console
Mysql2::Error::ConnectionError: SSL connection error: error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol

とエラーが出た。

原因・対処

原因

自身の環境でこのエラーが起きた原因は二つ

➀heroku stackが heroku-20であった
➁config/database.ymlに必要な記述が無かった

対処

➀heroku stackが heroku-20であった
→heroku-18を利用できるようにする

console
heroku stack:set heroku-18 -a <app name>

➁config/database.ymlに必要な記述が無かった
productionに以下のコードを追加

config/database.yml
production:
  url: <%= ENV['DATABASE_URL'] %>

理由

きちんとした理由は随時募集しています。。誰か教えてください。。

➀heroku stackが heroku-20であった
 heroku-20に変わることで出てきた、書くべき必要な処理が書けていなかった?
 →これまでのheroku-18にすることでとりあえず解決

➁config/database.ymlに必要な記述が無かった

config/database.ymlにはこんな記述があるらしいです(自分は何故か消えていた)

config/database.yml
# As with config/credentials.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>

特に今回は後半の記述が大切で

config/database.yml
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>

雑に和訳すると

「Herokuや他のプラットフォーム上で、あなたは環境変数の形で様々なURLをもらえるでしょう。こんなかんじで:
DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
あなたはこのデータ構成をこのように使えます
production:
url: <%= ENV['DATABASE_URL'] %>」

要はこの記述が無かったことで、どこのデータベースを使えばいいか分からずにエラーが出ていた。

まとめ

何かおかしいことが起こり、ググっても分からないときは使っているもののバージョンを確認してみよう!

読んでいただきありがとうございました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

heroku rake db:migrateでエラーが出た時の対処

プログラミング初心者で勉強中の身ですが、ググってもなかなか情報が出なかったので報告します。

環境

Mac OS X
Ruby: 2.7.1
Rails: 6.0.3.4
heroku stack: heroku-20(エラーが出た時)
DB: MYSQL

起こったこと

https://qiita.com/murakami-mm/items/9587e21fc0ed57c803d0
こちらの記事を参考にherokuへのデプロイを試みたところ、

console
$ heroku rake db:migrate

を実行した時に

console
Mysql2::Error::ConnectionError: SSL connection error: error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol

とエラーが出た。

原因・対処

原因

自身の環境でこのエラーが起きた原因は二つ

➀heroku stackが heroku-20であった
➁config/database.ymlに必要な記述が無かった

対処

➀heroku stackが heroku-20であった
→heroku-18を利用できるようにする

console
heroku stack:set heroku-18 -a <app name>

➁config/database.ymlに必要な記述が無かった
productionに以下のコードを追加

config/database.yml
production:
  url: <%= ENV['DATABASE_URL'] %>

理由

きちんとした理由は随時募集しています。。誰か教えてください。。

➀heroku stackが heroku-20であった
 heroku-20に変わることで出てきた、書くべき必要な処理が書けていなかった?
 →これまでのheroku-18にすることでとりあえず解決

➁config/database.ymlに必要な記述が無かった

config/database.ymlにはこんな記述があるらしいです(自分は何故か消えていた)

config/database.yml
# As with config/credentials.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>

特に今回は後半の記述が大切で

config/database.yml
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>

雑に和訳すると

「Herokuや他のプラットフォーム上で、あなたは環境変数の形で様々なURLをもらえるでしょう。こんなかんじで:
DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
あなたはこのデータ構成をこのように使えます
production:
url: <%= ENV['DATABASE_URL'] %>」

要はこの記述が無かったことで、どこのデータベースを使えばいいか分からずにエラーが出ていた。

まとめ

何かおかしいことが起こり、ググっても分からないときは使っているもののバージョンを確認してみよう!

読んでいただきありがとうございました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Cent OS 7にBitnami Redmine Stackを構築してデータベース移行した話

目次

1. 経緯
2. 前提条件
3. インストーラーファイルの取得
4. Bitnami Redmineのインストール
5. 現行データベースのバックアップ
6. リストア
7. 参考文献

1. 経緯

Bitnami Redmine Stackが構築されたWindowsサーバから,Linuxサーバへデータベースを移行する機会があったため,手順を備忘録として書かせて頂きました。

BitnamiはWebアプリケーションを,PHP,MySQLなど込み込みで構築してくれる素晴らしいソフトウェアです。大変便利です。

2. 前提条件

①ネットワーク環境に応じた,適切なIPアドレスが設定されていること。
(今回は192.168.10.60を指定。)
②ファイアウォールが無効になっていること。
③SELINUXが無効になっていること。

3. インストーラーファイルの取得

1. Bitnamiの公式サイトにアクセスし,【Download for Linux 64-bit】を押下します。
image.png
2. 「Download now!」と表示されます。アカウント登録を促されますが,【No thanks, just take me to the download】を押下することで回避可能です。
image.png
3. ダウンロードのダイアログが表示されます。【保存】を押下します。
image.png

以上で,インストーラーファイルの取得は完了です。
続いて,Bitnami Redmineのインストールへ移ります。

4. Bitnami Redmineのインストール

1. 移行先サーバにSSH接続します。今回はTeraTermを使用しました。
image.png
2. 構築に必要なソフトウェアをインストールします。

# yum install -y glibc-devel perl perl-Data-Dumper

3. 先程ダウンロードしたインストーラーファイルを転送します。【ファイル】→【SSH SCP...】の順に押下します。
image.png
4. 「TTSSH:Secure File Copy」画面が表示されます。【...】を押下します。
01.jpg
5. ダウンロード先フォルダを開き,【bitnami-4.1.1-7-linux-x64-installer.run】を選択します。
image.png
6. 「TTSSH:Secure File Copy」画面に戻ります。【Send】を押下します。
02.jpg
7. インストーラーファイルに実行権限を付与します。

# chmod +x ./bitnami-redmine-4.1.1-7-linux-x64-installer.run 

8. インストーラーファイルを実行します。

# ./bitnami-redmine-linux-x64-installer.run

9. インストールウィザードの言語設定を行ないます。

Language Selection

Please select the installation language
[1] English - English
[2] Spanish - Espanol
[3] Japanese - 日本語
[4] Korean - ???
[5] Simplified Chinese - ?体中文
[6] Hebrew - ?????
[7] German - Deutsch
[8] Romanian - Roman?
[9] Russian - Русский
Please choose an option [1] : ★英語ワカラナイので3の日本語を選択

10. インストールするコンポーネントを選択します。何も入力せずEnterを押下すると,大文字の方の選択肢となります。Enterを連打します。

----------------------------------------------------------------------------
ようこそ Bitnami Redmine Stack セットアップウィザードへ。

----------------------------------------------------------------------------
インストールするコンポーネントを選択してください。インストールしないの選択を
外してください。準備ができたら“次へ“をクリックしてください。

Subversion [Y/n] :★Enterを押下

PhpMyAdmin [Y/n] :★Enterを押下

Redmine : Y (Cannot be edited)

Git [Y/n] :★Enterを押下

上記選択部分が正しいことを確認してください。 [Y/n]:★Enterを押下

11. インストール先フォルダの選択をします。今回は変更しませんでしたが,「/opt/redmine」とすると便利かもしれません。

----------------------------------------------------------------------------
Installation folder

Bitnami Redmine Stack をインストールするフォルダを選択してください。

フォルダを選択 [/opt/redmine-4.1.1-7]:★Enterを押下

12. 管理者アカウントの作成をします。変更したい場合は,適宜入力をします。

----------------------------------------------------------------------------
管理者アカウントの作成

Bitnami Redmine Stack の管理者アカウントを作成します。

表示用氏名 [User Name]: ★Enterを押下

Email アドレス [user@example.com]:★Enterを押下

ログイン名 [user]: ★Enterを押下

パスワード :★任意のパスワード
確認のためにパスワードをもう一度入れてください :★任意のパスワード

13. データベースに保管する際の規定の言語を選択します。

----------------------------------------------------------------------------
データベースに保管する際の既定の言語

データベース設定の規定値として使用する言語を選択してください:

[1] Bosnian
[2] Bulgarian
[3] Catalan
[4] Czech
[5] Danish
[6] German
[7] English
[8] Spanish
[9] French
[10] Galician
[11] Hebrew
[12] Hungarian
[13] Italian
[14] 日本語
[15] 韓国語
[16] Lithuanian
[17] Dutch
[18] Norwegian
[19] Polish
[20] Portuguese
[21] Romanian
[22] Russian
[23] Slovak
[24] Slovenian
[25] Serbian
[26] Swedish
[27] Turkish
[28] Ukrainian
[29] Vietnamese
[30] Chinese
オプションを選択してください [14] : ★Enterを押下

Do you want to configure mail support? [y/N]: ★Enterを押下

14. インストールを開始させます。

お使いのコンピュータに Bitnami Redmine Stack をインストールする準備が整いました。

続けますか? [Y/n]:★Enterを押下

15. 100%になるまで待機後,Redmineを起動させます。

----------------------------------------------------------------------------
しばらくお待ちください。 Bitnami Redmine Stack をお使いのコンピュータにインストール中です。

インストール中
0% ______________ 50% ______________ 100%
################################
----------------------------------------------------------------------------
セットアップウィザードによる Bitnami Redmine Stack のインストールが完了しました。

Redmine アプリケーション起動 [Y/n]: ★Enterを押下

情報: Bitnami Redmine Stack については、ブラウザで
http://127.0.0.1:80 にアクセスしてください。
続けるには [Enter] キーを押してください :★Enterを押下

以上でBitnami Redmineのインストールは完了です。
続いて,現行データベースのバックアップへ移ります。

5. 現行データベースのバックアップ

1. 移行元のWindowsサーバへ接続します。エクスプローラを起動させ,以下のフォルダへアクセスします。
(インストール先を変更している場合は異なります。)

C:\\Bitnami\redmine-***\apps\redmine\htdocs\config\
(***はredmineのバーションが入ります。)

2. 【database.yml】ファイルをテキストエディタで開き,以下の記述内容を控えておきます。
(MySQLでデータベースのバックアップファイルを作成する際に使用します。)

production:
 adapter:mysql2
 database:bitnami_redmine ★
 host:127.0.0.1
 username:bitnami ★
 password:*** ★
 # Use "utf8" instead of  "utfmb4" for MySQL prior to 5.7.7
 encoding:utf8mb4
 port:3306
(★で示した箇所を控える)

3. 【スタートボタン】→【Bitnami Redmine Stack】を押下し,【Bitnami Redmine Stackを使用する】を起動します。
image.png
4. コマンドプロンプトが表示されます。現行データベースのバックアップファイルを作成します。
※★部分は先程控えた内容を入力。
※「-p」の後にスペースを入れないよう注意!

C:\Bitnami\redmine-***> mysqldump -u [★username] -p[★password] [★database] > bitnami_redmine_backup

5. 以下のフォルダにアクセスすると,「bitnami_redmine_backup」という名前でバックアップファイルが配置されています。ローカル端末へコピペして転送しておきます。
image.png

6. リストア

1. 再度移行先サーバへSSH接続し,先程取得しておいたバックアップファイルを転送します。【ファイル】→【SSH SCP...】の順に押下します。
image.png
2. 「TTSSH:Secure File Copy」画面が表示されます。【...】を押下します。
01.jpg
3. 【bitnami_redmine_backup】を選択します。
image.png
4. 「TTSSH:Secure File Copy」画面に戻ります。【Send】を押下します。
03.jpg
5. 「use_redmine」というコマンドを実行します。Windowsでいう「Bitnami Redmine Stackを使用する」はこのコマンドになるようです。

# /opt/redmine-4.1.1-7/use_redmine

7. バックアップファイルを指定して,データベースを上書きします。実行ユーザーはrootにしました。

# mysql -u root -p*** bitnami_redmine < bitnami_redmine_backup
(***はrootユーザのパスワード)

以上で,リストア完了です。

7. 参考文献

ⅰ)bitnami CentOS Redmine - カロンの渡し船
ⅱ)bitnamiでCentOS7にRedmineをインストールしてみた
ⅲ)データのバックアップ方法

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む