- 投稿日:2021-03-08T21:52:37+09:00
【MySQL】プライマリキーの設定
データをユニーク(一意)とするために、プライマリキーを設定する。
一意のIDがプライマリキーとして設定されることが多い。プライマリキーの設定
PRIMARY KEY (column_name)
として設定する。CREATE TABLE unique_cats ( cat_id INT NOT NULL, name VARCHAR(100), age INT, PRIMARY KEY (cat_id) );オートインクリメントの設定
一意のIDをMySQLに自動で設定させることができる。
IDはインクリメントさせる。
AUTO_INCREMENT
キーワードを設定する。CREATE TABLE unique_cats ( cat_id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), age INT, PRIMARY KEY (cat_id) );
- 投稿日:2021-03-08T21:46:30+09:00
XAMPP コンパネを使わない制御 (Windows)
はじめに
- XAMPP Control Panelは、「Quit」を使用せずにウインドウを閉じると、バックグラウンドプロセスが残ってしまうようです。
- 導入直後はともかく、設定が固まってからは、もう少し簡便に使いたいと考えました。
- この記事では、ApacheとMySQL(MariaDB)だけを扱いますが、他のサーバもほぼ同様です。
環境
- Windows 10 Pro 20H2
- XAMPP 8.0.2
- Control Panel v3.2.4
- 導入編 ⇒ XAMPPとLaravelの導入 (Windows)
A. プロセスとして使う
- サーバが稼働中であることを分かり易く示したい場合にお勧めの方法です。
- あらかじめ用意されている、起動と終了のバッチファイルを使用します。
- プロセスとして開始すると、プロセスを終了するまでウインドウが残ります。
- ショートカットを作ればウインドウを最小化しておくこともできます。
- ウインドウを閉じると、サーバによって、プロセスが強制終了する場合と、バックグラウンドにプロセスが残ってしまう場合があります。
- プロセスが残ってしまった場合でも、「終了」のバッチを使うことで、正しく終了できます。
Apache
開始
C:\xampp\apache_start.bat終了
C:\xampp\apache_stop.batMySQL
開始
C:\xampp\mysql_start.bat終了
C:\xampp\mysql_stop.batB. サービスとして使う
- 目立たずひっそりと稼働させたい場合にお勧めの方法です。
- サービスとして導入すると、OSの一部になって、バックグラウンドで動作します。
- あらかじめ用意されている、サービスの導入と削除を行うバッチファイルを使用します。
- バッチファイルは実行時のディレクトリに依存していますので、実行の際はカレントディレクトリに注意してください。
- 導入されたサービスは、スタートアップが「自動」に設定されています。
- PC起動時に自動的に開始したくない場合は、「サービス」アプリで「手動」に切り替えてください。
- 設定アプリは、スタートボタンを押して「サービス」と入力すれば見つかります。
- XAMPPをアンインストールする際は、先だって、導入済みのサービスを全て削除してください。
Apache
サービスの導入
コマンドプロンプト (管理者)C:\WINDOWS\system32>cd \xampp\apache C:\xampp\apache>apache_installservice.bat Installing Apache2.4 as an Service Installing the 'Apache2.4' service The 'Apache2.4' service is successfully installed. Testing httpd.conf.... Errors reported here must be corrected before the service can be started. Now we Start Apache2.4 :) Apache2.4 サービスを開始します. Apache2.4 サービスは正常に開始されました。サービスの開始と終了
コマンドプロンプト (管理者)C:\>net start Apache2.4 Apache2.4 サービスを開始します. Apache2.4 サービスは正常に開始されました。 C:\>net stop Apache2.4 Apache2.4 サービスを停止中です. Apache2.4 サービスは正常に停止されました。サービスの削除
コマンドプロンプト (管理者)C:\xampp\apache>apache_uninstallservice.bat Are you sure you wan't this? now stopping Apache2.4 when it runs Apache2.4 サービスを停止中です. Apache2.4 サービスは正常に停止されました。 Time to say good bye to Apache2.4 :( Removing the 'Apache2.4' service The 'Apache2.4' service has been removed successfully.MySQL
サービスの導入
コマンドプロンプト (管理者)C:\xampp\apache>cd ..\mysql C:\xampp\mysql>mysql_installservice.bat Installing MySQL as an Service 指定されたファイルが見つかりません。 Service successfully installed. Try to start the MySQL deamon as service ... mysql サービスを開始します. mysql サービスは正常に開始されました。サービスの開始と終了
コマンドプロンプト (管理者)C:\xampp\mysql>net start MySQL mysql サービスを開始します. mysql サービスは正常に開始されました。 C:\xampp\mysql>net stop MySQL mysql サービスを停止中です. mysql サービスは正常に停止されました。サービスの削除
コマンドプロンプト (管理者)C:\xampp\mysql>mysql_uninstallservice.bat now stopping MySQL when it runs mysql サービスを停止中です. mysql サービスは正常に停止されました。 Uninstalling MySql-Service Service successfully removed.サービスの開始と終了をショートカットする
- サービスの開始と終了の度に、コマンドプロンプトを開くのは面倒ですね。
a. ショートカットを作る
- 管理者権限の使用を明示したい場合にお勧めの方法です。
- ユーザアカウント制御(UAC)のダイアログが出て、管理者への昇格の是非を確認されます。
- 下記のように「リンク先」を指定してショートカットを作ります。
- 「詳細設定」で、「管理者として実行」にチェックを付けておきます。
Apache
開始のリンク先C:\windows\system32\net.exe start Apache2.4終了のリンク先C:\windows\system32\net.exe stop Apache2.4MySQL
開始のリンク先C:\windows\system32\net.exe start MySQL終了のリンク先C:\windows\system32\net.exe stop MySQLb. UACのダイアログを回避する
- 面倒な操作を極力避けたい場合にお勧めの方法です。
- 以下では、「サービス"Apache2.4"の開始」を例に説明します。
- 「サービス~の終了」では、「start」⇒「stop」になります。
- "MySQL"であれば、「Apache2.4」⇒「MySQL」です。
タスクを作る
- スタートボタンを押して
タスク
と入力し、タスク スケジューラ
を起動します。
タスク マネージャー
ではありません。- タスクスケジューラが開いたら、
操作
から新しいフォルダ…
を選んで、Xampp
フォルダを作ります。
タスク スケジューラ ライブラリ
の下にできたXampp
を選びます。タスクの作成…
を選んで、タスクを作成します。
全般
タブ
名前
:Start Apache2.4
ユーザがログオンしているかどうかにかかわらず実行する
: 選択
- これを選ぶと、実行時にウインドウが開きません。(ヘッドレス)
最上位の特権で実行する
: オン
- これによって、UACのダイアログを回避できます。
操作
タブ
新規…
操作
:プログラムの開始
プログラム/スクリプト
:C:\windows\system32\net.exe
引数の追加
:start Apache2.4
条件
タブ
コンピュータをAC電源で使用している場合のみタスクを開始する
: オフ
- バッテリ動作時に起動したくない場合は「オン」のままで良いです。
設定
タブ
タスクを停止するまでの時間
:1 分間
- 選択肢にはないけど、テキストとして入力すれば設定できます。
- 「1」と「分間」の間には半角スペースがあります。
新しいインスタンスを開始しない
⇒既存のインスタンスの停止
- 正しく入力できたら
OK
ボタンを押して保存します。
- ヘッドレスのタスクを保存しようとすると、実行時に使用するアカウントを確認されます。
- 保存したタスクは後からでも編集可能ですが、場所(フォルダ)と名前は変更できません。
ショートカットを作る
- 「リンク先」として、下記のように指定します。
- これは、タスクスケジューラ
schtasks.exe
に、実行/run
、タスク名/tn "Xampp\Start Apache2.4"
を渡しています。- タスク名に空白文字が含まれるので、二重引用符で囲っています。
リンク先C:\Windows\System32\schtasks.exe /run /tn "Xampp\Start Apache2.4"
- このショートカットは通常の権限で実行可能なので、UACのダイアログは出なくなります。
稼働状況の確認
以下のバッチファイルは、サービスとして導入した場合と、プロセスとして使用した場合、双方の稼働状況を確認可能です。
show_status.bat@echo off echo XAMPP status rem Check As Services sc queryex Apache2.4 sc queryex MySQL rem Check As Processes tasklist /FI "IMAGENAME eq httpd.exe" tasklist /FI "IMAGENAME eq mysqld.exe" pause
- 投稿日:2021-03-08T15:17:51+09:00
【Mac版】MySQLインストール方法
ミックさんの書籍「ゼロから始めるデータベース操作」を学習するにあたり、この本ではWindowsでPostgreSQLをインストールして読み進めるように書かれていますが、MacでMySQLをインストールして読み進めたかったので方法を記事にします。
1. Homebrewのインストール
「Homebrew」を用いてMySQLをインストールするため、以下のコマンドでインストールされているか確認。
brew -v
Homebrew 3.0.4
のように表示された場合はインストールされているため、「2. MySQLのインストール」に進んで下さい。
brew: command not found
と表示された場合はHomebrewがインストールされていないので、この後の手順にしたがってインストールをしましょう。インストール
以下のコマンドを実行
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"インストールの途中で「Enterキー」を押すことを求められますので、その際はEnterを押す。
途中でPCにログインする時に使用しているパスワードの入力も求められるので、入力後Enter。(この際入力文字は何も表示されませんが入力できています)brew -v再度このコマンドで確認します。
Homebrew 3.0.4
のように表示されたらOK。2. MySQLのインストール
今回はバージョン5.7をインストールします。
brew install mysql@5.7以下のように表示されたら成功。
mysql@5.7 is keg-only, which means it was not symlinked into /usr/local, because this is an alternate version of another formula. If you need to have mysql@5.7 first in your PATH, run: echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc For compilers to find mysql@5.7 you may need to set: export LDFLAGS="-L/usr/local/opt/mysql@5.7/lib" export CPPFLAGS="-I/usr/local/opt/mysql@5.7/include" For pkg-config to find mysql@5.7 you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/mysql@5.7/lib/pkgconfig" To have launchd start mysql@5.7 now and restart at login: brew services start mysql@5.7 Or, if you don't want/need a background service you can just run: /usr/local/opt/mysql@5.7/bin/mysql.server start ==> Summary ? /usr/local/Cellar/mysql@5.7/5.7.32: 319 files, 234.4MB ==> Caveats表示されている画面から、
If you need to have mysql@5.7 first in your PATH, run:
echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
となっている部分を探し、echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
の部分をコピーしておく。~/.zshrc
の部分は人によって表示が異なります。3. パスの設定
MySQLを使用可能にするためにパスを通します。
先程コピーした内容をターミナルで実行。echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc設定を反映させるために以下を実行。
source ~/.zshrc最後にパスが正しく設定されたかを確認。
mysql --version
mysql Ver 14.14 Distrib 5.7.32, for osx10.15 (x86_64) using EditLine wrapper
のように表示されればOK。4. パスワードの設定
MySQLを起動。
brew services start mysql@5.7パスワード設定
mysql_secure_installation実行すると以下のように表示されるが今回はEnterでスキップ。
VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin? Press y|Y for Yes, any other key for No:次に以下のように表示されるので任意のパスワードを入力。
Please set the password for root here. New password: Re-enter new password: #New passwordと同様のパスワードを入力この後にいくつか質問されますが全てEnterでスキップ。
最後にAll done!
と表示されれば完了です。5. MySQLにログイン
MySQLの起動
brew services start mysql@5.7ログイン
mysql --user=root --passwordパスワードを求められるので設定したパスワードを入力してEnter。
mysql>
と表示されれば成功。ログアウト
「ctrl + D」でログアウトできます。
MySQLの停止
brew services stop mysql@5.7さいごに
以上です!ありがとうございました!
- 投稿日:2021-03-08T14:52:16+09:00
MySQL基礎(CREATE, INSERT)
postsデータベース作成
message, likesテーブル作成方法ターミナルDROP TABLE IF EXISTS posts; --もし、postsがあれば削除する CREATE TABLE posts ( message VARCHAR(140), --文字制限 likes INT --整数 ); DESC posts; --postsテーブルの確認 SHOW TABLES; --データベースの確認 INSERT INTO posts (message, likes) VALUES -- ('Thanks', 12), ('Arigato', 4); SELECT * FROM posts; --テーブル名(posts)中から全てのレコードを取ってくる実行結果
+---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | message | varchar(140) | YES | | NULL | | | likes | int(11) | YES | | NULL | | +---------+--------------+------+-----+---------+-------+ +-----------------+ | Tables_in_myapp | +-----------------+ | posts | +-----------------+ +---------+-------+ | message | likes | +---------+-------+ | Thanks | 12 | | Arigato | 4 | +---------+-------+
- 投稿日:2021-03-08T13:19:42+09:00
JavaからMySQLのデータベースにアクセルする時に発生する例外の対処法
JavaでMySQLのデータベースにアクセスしようとしたら拒否されて例外が発生してアクセスできなかったので、色々と調べていました。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)どうやらrootユーザが設定されていなくてこのようなエラーが発生することがあるようです。
このエラーが出た時はまずMySQLを停止してから、オプション付きで起動することによって解決しました。
1、まずは一旦停止します。
# service mysqld stop2、次にMySQLを–skip-grant-tablesオプション付きで起動します。
これはMySQLの権限システムを使用しないで起動するためのものだそう。# mysqld_safe --skip-grant-tables &僕の場合はこれで解決しました。
- 投稿日:2021-03-08T12:25:19+09:00
AWSへデプロイ後にユーザー情報が更新できない現象への対処法
AWSへデプロイ後に、user.saveでユーザー情報が保存できない現象についての対処法
とあるプログラミング学習サイトを利用してRailsを学び、作成したアプリケーションをサーバーへデプロイしたところまでは良かったのですが、その後作成したユーザーのアイコンを変更できない現象に遭遇しました。手探りでの対処で苦戦しましたので、同じことを繰り返さないためにも投稿に残したいと思います。
現象が発生した元のコード
app/controllers/users_controller.rbdef update @user = User.find_by(id: params[:id]) @user.name = params[:name] @user.user_id = params[:user_id] @user.email = params[:email] if params[:image] @user.image_name = "#{@user.id}.jpg" image = params[:image] File.binwrite("public/user_images/#{@user.image_name}", image.read) end if params[:password] != nil @user.password = params[:password] end if @user.save flash[:notice] = "ユーザー情報を編集しました" redirect_to("/users/#{@user.user_id}") else render("users/#{@user.user_id}/edit") end endこのコードでローカルではうまくいっていたのですが、サーバーへデプロイ後はユーザー画像のみ保存されて、MySQLのデータは更新されませんでした。
試したこと
エラーが吐き出されていないか確認しましたが、log/production.logにはエラーらしきものはなく、mysql.logを確認しようとしましたがどこにあるのかわからず、できませんでした。
このためはじめはrails consoleで状況を確認しようとしましたが、RDSのデータベースには接続されていないのか、users = User.allでユーザー情報を取得しようとしても、users.count = 0の状態でした。
そこで直接MySQLへログインして、テーブルのデータをSQLで更新してみたところ、こちらはできましたので、MySQLを使用して更新する方法を取ることにしました。
現象が改善した後のコード
app/controllers/users_controller.rbdef update id = @current_user.id updated = 0 update_name_sql = "update users set name = '#{params[:name]}' where id =#{id};" updated = ActiveRecord::Base.connection.execute(update_name_sql) update_email_sql = "update users set email = '#{params[:email]}' where id =#{id};" updated = ActiveRecord::Base.connection.execute(update_email_sql) if params[:image] update_image_name_sql = "update users set image_name = '#{id}.jpg' where id =#{id};" updated = ActiveRecord::Base.connection.execute(update_image_name_sql) image = params[:image] File.binwrite("public/user_images/#{id}.jpg", image.read) end if params[:password] hashed_password = BCrypt::Password.create(params[:password]) update_password_sql = "update users set encrypted_password = '#{hashed_password}' where id =#{@current_user.id};" ActiveRecord::Base.connection.execute(update_password_sql) end if updated =! nil flash[:notice] = "ユーザー情報を編集しました" redirect_to("/users/#{@user.id}") else flash[:notice] = "データベースへの保存に失敗しました" render("users/edit") end endSQLを直に作成して、ActiveRecord::Base.connection.execute(SQL)でMySQLのデータベースを直接更新する方法へ変えました。
(パスワードに関してもトラブルがありましたので、直接暗号化してから保存するコードに書き換えました)まとめ
プログラミング学習サイトの良いところは、手軽に言語の学習に手をつけられるところですね。しかし現実には実用レベルに達するためにいくつもの壁を越えなければいけないものなのだと実感しています。ローカルでは動いていたけれど、サーバー環境ではうまくいかないことが普通にあるのだとわかりました。これに懲りずにポートフォリオ作りに励もうと思います!
- 投稿日:2021-03-08T00:45:07+09:00
Gradle(Spring boot)で作ったWeb APIをHerokuにデプロイしてMySQL接続してダンプをリストアするまで
理由
制作中のAndroidアプリでWeb APIをたたくときにいちいち起動するのが面倒くさい
せっかくなので作ったWeb APIをデプロイしてみたい
初歩的なところでつまずいてしまったので同じ過ちを繰り返さないための備忘録ですゴール
- Gradle(Spring boot)で作ったWeb APIをherokuにデプロイする
- MySQL接続をする
- 自作したAndoroidアプリからたたける
herokuとは
インフラストラクチャ管理が不要で、アプリケーションの開発から実行、運用までのすべてをクラウドで完結できるクラウドベースの PaaS(サービスとしてのプラットフォーム)
(公式より)
https://jp.heroku.com/homeやったこと
環境
- macOS Big Sur 11.2.1
- Spring boot 2.4.3
- MySQL 5.7
0. 事前準備
- MySQL接続するWeb APIをGradleで作る
- 作ったアプリケーションをgit管理している
- herokuアカウントを持っている
- インポートしたいダンプを用意している
1. herokuとアプリの準備
1.1 heroku CLI(Command Line Interface)をインストールする
↑からインストーラをダウンロードしてもいいですし、Homebrewが入っている人はターミナルで↓のコマンドを叩いてもいいです。
terminal$ brew install heroku/brew/herokuちょっぴり時間がかかるのでコーヒーでも飲んで待ちましょう。
1.2 ターミナルでherokuにログインする
terminal$ heroku login heroku: Press any key to open up the browser to login or q to exit (略) Logged in as {メールアドレス}最後に
Logged in as {メールアドレス}
で自分のherokuアカウントに登録しているメールアドレスが表示されたら成功です。2. アプリをデプロイする
2.1 ターミナルでアプリの場所に移動する
初心者のつまずき1: gitで1つのリポジトリにGradleプロジェクトとDockerとAndroidアプリをまとめちゃってるんだけどこの場合はどうすれば?
新たにリポジトリを作ってGradleプロジェクト単体だけ移動しました。
適解かはわからないけど、スターターガイドのサンプルプロジェクトはbuild.gradle
がroot階層にある状態になっていたのでそれに倣いました。そして新しく作ったリポジトリに移動します。
terminal$ cd path/to/repository2.2 herokuでアプリを作成する
terminal$ heroku create {アプリ名} Creating *** ...done https://***.herokuapp.com/ | https://git.heroku.com/***(
{アプリ名}
は省略可能)2.3 コードをデプロイする
terminal$ git push heroku masterできませんでした。
初心者のつまずき2: heroku側とのJDKバージョンのミスマッチ
terminalremote: > Task :compileJava FAILED remote: remote: FAILURE: Build failed with an exception. remote: remote: * What went wrong: remote: Execution failed for task ':compileJava'. remote: > Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.Java 8でコンパイルしようとしている。。。
公式のサンプルプロジェクトに参考になりそうなファイルがあったので真似してみました。system.propertiesjava.runtime.version=11この
system.properties
というファイルを新たに作って親階層に置きます。コミットを忘れずに。
そして再度プッシュ。成功!!
terminal... remote: remote: BUILD SUCCESSFUL in 54s remote: 4 actionable tasks: 4 executed remote: -----> Discovering process types remote: Procfile declares types -> (none) remote: Default types for buildpack -> web remote: remote: -----> Compressing... remote: Done: 92.3M remote: -----> Launching... remote: Released v3 remote: https://***.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done.2.4 起動しているか確認してみる
terminal$ heroku ps:scale web=1 Scaling dynos... done, now running web at 1:Freeもしくは
terminal$ heroku openでアプリ名で生成されたURLにあるアプリが開きます。が、まだデータベース接続の設定をしていないのでエラー画面が表示されます。
3. MySQLと接続する
DB接続をします。herokuはデフォルトではpostgresQLらしいですが今回はMySQLを使います。
ClearDB MySQL
とJawsDB MySQL
というアドオンがあり、どちらも5MBまでは無料で使えます。
- ClearDB MySQL: https://elements.heroku.com/addons/cleardb
- JawsDB MySQL: https://elements.heroku.com/addons/jawsdb
ただ、注意が必要なのが
ClearDB MySQL
はバージョンがデフォルトで5.6
で、かつ無料プランでは変えられないそうなので、それ以外を使っている人はJawsDB
を使うしかなさそうです。ちなみにJawsDB MySQLのデフォルトは5.7
とのこと。(2021年3月時点)私は
5.7
を使っていたのでJawsDB MySQL
を使用します。3.1 DB作成
terminal$ heroku addons:create jawsdb:kitefin --name=[your DB name] --version=5.7
--name=[your DB name]
オプションでデータベースの名前を任意に変えられるらしい。重要
それよりも大事なのが--version=5.7
オプション。後述しますが、最初これをつけなかったせいでダンプのインポートに失敗しました。というか知らずにClearDB MySQLを入れていたので全然だめだった。
もしダンプをインポートしようと考えている場合は、エクスポートしたMySQLのバージョンと同じものを設定すべし。3.2 接続に必要な情報を取得
一旦、configを見てみます。
terminal$ heroku config JAWSDB_URL: mysql://******いましがた取得した
CLEARDB_DATABASE_URL
をよく見ると以下のようなフォーマットになっています。mysql://[username]:[password]@[host]:[port]/[database name]ただ今回はGradle用に
JDBC_DATABASE_URL
を使用します。が、あとでダンプをインポートするときに使うのでメモはしておきましょう。
公式の説明にはJava、Scala、Clojure、Gradle 用の公式 Heroku buildpack では、dyno の起動時に JDBC_DATABASE_URL 環境変数の作成を試みます。
とあるので、特に何もしなくても変数を作ってくれるみたいです。
試しに以下のコマンドで表示してみます。terminal$ heroku run echo \$JDBC_DATABASE_URL jdbc:mysql://*******/*******?password=*******&reconnect=true&user=*******ばっちり!
今回のGradleアプリケーションはapplication.yml
ファイルでデータベースを設定していたので、それぞれ値を以下のように修正します。application.ymlspring: datasource: url: ${JDBC_DATABASE_URL} username: ${JDBC_DATABASE_USERNAME} password: ${JDBC_DATABASE_PASSWORD}3.3 確認
再度
$ heroku open
してみます。
ルート直下に表示用のビューを用意している場合はそれが表示されるはずです。
私は用意していないので404 エラーですが。とはいえ問題なくデータベース接続はできていそうです。
3.4 ダンプをインポートする
いつものコマンドです。各パラメータには3.2 でメモした値を使います。
terminal$ mysql -u[username] -p[password] [database name] --host=[host] < [path/to/your/dump]初心者のつまずき3: MySQLのバージョンが違うのでダンプインポートに失敗する
(結局、根本原因は2択から絞れませんでした。)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version最初にClearDBでDBを作るときにバージョンを指定しなかったらこんなエラーがでました。
???と思ってバージョンを確認してみることに。
terminal$ mysql -u[username] -p[password] [database name] --host=[host] Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 205064 Server version: 5.6.50-log MySQL Community Server (GPL) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>バージョンが
5.6
だった。というわけで一旦このDBは削除してバージョン指定して再度作り直しましたが、バージョン指定したはずなのにやっぱり5.6
。どうやら無料プランでは変えられないらしい?なのでJawsDB
に変えました。
初心者のつまずき4: 短時間に接続を繰り返しすぎて上限超える
うまくいかないなあと何度もダンプインポートのコマンドをたたきすぎたせいか、やりすぎって怒られてしまいました。1時間くらい放置してから再度試すことにします。
java.sql.SQLSyntaxErrorException: User '********' has exceeded the 'max_user_connections' resource (current value: 10)
初心者のつまずき5: MySQLのバージョン合わせてもダンプインポートに失敗する
1時間後、無事接続できるようにはなりましたが、なぜかまだ同じエラーが出ます。バージョン合わせたはずなのに。
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysqldump: [Warning] Using a password on the command line interface can be insec' at line 1ダンプファイルを開いて1行目を確認すると、エラー文言にも出ている警告文
mysqldump: ~ be insec
が書いてあるだけでした。
つまりインポートする処理には影響なし。
そして、ちょっとしたバージョンの差でもちょっとした書き方の違いでエラーになることがあるということを見かけたので、思い切ってエラーだと言われている1行目を削除することにしました。するとうまくいきました!!!
結局バージョンの違いのせいだったのか1行目の警告文のせいだったのか、はたまたその両方だったのかは今となってはわかりませんが、似たような事象に陥っている人がいたら試してみてください。
4 APIをたたいてDBのデータを取得してみる
ようやくWebAPIとDBの接続が完了したのでAPIをたたいてみて動作確認をします。
成功!!!
このあとAndroidアプリでもちゃんとデータが取ってこれていることを確認できました。
めでたしめでたし。おまけ
ちなみにお手軽にGET、POST、PUT、DELETEなどなどのAPIを叩くことのできるこのアプリケーション。めっちゃ便利です。
Advanced REST client - Chrome ウェブストア参考