初めに
・開発したアプリをデプロイしようとHerokuを使用(人生初デプロイ)
・参考にした記事はこちら
やりたいこと
MyAdmin(ローカル環境)にあるデータベース上のテーブルやカラムや行(値)を全てMySQL Workbench(本番環境)上にインポートしたい
#やったこととそのエラー
1.手順の通りインポート
<内容>
冒頭の参考記事の「Workbenchにデータベースをインポート」内で
Administrationの中にあるData Import/Restoreを選択
(手順の通りやって…)
Start Importを押してインポート
まで実行
<結果>
Workbenchが落ちる...
2.SQLでインポート
<内容>
MyAdminからエクスポートした「〇〇.sql」ファイルがあると思います。
そのファイルにエクスポートしたデータを生成するSQLが入っているので、コピー&ペーストし、SQLを実行
※詳細は以下参考記事
<結果>
Workbenchの「ActionOutput」に以下エラーが発生(#9)
※オレンジ塗りつぶし部は本番環境用データベース情報の<ユーザー名>が記載されています。
以下、エラー文抜粋
Actions
CREATE DATABASE IF NOT EXISTS 'my_project(ローカル環境データベース名)' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
Message
Error Code: 1044. Access denied for user '<本番環境ユーザー名>'@'%'to database 'my_project(ローカル環境データベース名)'
解決策
手順
- インポートするsqlファイルを開く
- 24行目付近にある以下SQLを探す
CREATE DATABASE IF NOT EXISTS <ローカル環境データベース名>
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE <ローカル環境データベース名>
;
3.以下のように記載
CREATE DATABASE IF NOT EXISTS <ローカル環境データベース名>
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE <ローカル環境データベース名>
;
要は**<ローカル環境データベース名>を<本番環境データベース名>に変更**します。
これで「やったこと」で書いたどちらの手順を踏めばSQlが実行され、インポートができます。
<参考>ちなみに
DB情報は環境変数を使うのがベター
僕はこれで一度デプロイしたデータベースアカウントを削除し、新しく作り直しました。
理由はこちらの記事の通り、Githubにデータベース情報を公開してしまったためです…
これから僕と同じように、エンジニアを目指されている方は、こういった機密情報の扱いは気を付けた方がいいと思います。(経験談)
環境変数の設定については参考記事①、参考記事②を張っておきます。
その他エラー
ここまで作業を進める中で色々警告文が表示されましたがデプロイする上で特に問題はありませんので、無視し続ければいいです。
1. TestConnection時のエラー
Workbench起動して「MySQL Connection」からDBの接続先を入力⇒DB情報を入力して「TestConnection」押下後に出る下記エラー
後に、
Successfully made the MySQL connection
の表示があればDBとの接続はできているので、問題ありません。
2. 「MySQL Connection」からDBをクリックした時のエラー
DBとの接続後、「MySQL Connection」から接続済のDBをクリックした時の警告文ですが、特に悪さはしないので問題ないです。
3. 「Error Code: 1062」や「Error Code: 1075」…etcの発生
「テーブルの重複」や「テーブルの重複によるPrimary KeyやAutoIncrement設定の失敗」など色々発生しました。
こちらはたくさん記事がありましたので、自力で調べていただければと思います。
最後まで読んでいただきありがとうございました!