20210308のMySQLに関する記事は7件です。

【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)
    );
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

XAMPP コンパネを使わない制御 (Windows)

はじめに

  • XAMPP Control Panelは、「Quit」を使用せずにウインドウを閉じると、バックグラウンドプロセスが残ってしまうようです。
  • 導入直後はともかく、設定が固まってからは、もう少し簡便に使いたいと考えました。
  • この記事では、ApacheとMySQL(MariaDB)だけを扱いますが、他のサーバもほぼ同様です。

環境

A. プロセスとして使う

  • サーバが稼働中であることを分かり易く示したい場合にお勧めの方法です。
  • あらかじめ用意されている、起動と終了のバッチファイルを使用します。
  • プロセスとして開始すると、プロセスを終了するまでウインドウが残ります。
    • ショートカットを作ればウインドウを最小化しておくこともできます。
    • ウインドウを閉じると、サーバによって、プロセスが強制終了する場合と、バックグラウンドにプロセスが残ってしまう場合があります。
    • プロセスが残ってしまった場合でも、「終了」のバッチを使うことで、正しく終了できます。

Apache

開始

C:\xampp\apache_start.bat

終了

C:\xampp\apache_stop.bat

MySQL

開始

C:\xampp\mysql_start.bat

終了

C:\xampp\mysql_stop.bat

B. サービスとして使う

  • 目立たずひっそりと稼働させたい場合にお勧めの方法です。
  • サービスとして導入すると、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.4

MySQL

開始のリンク先
C:\windows\system32\net.exe start MySQL
終了のリンク先
C:\windows\system32\net.exe stop MySQL

b. 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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Mac版】MySQLインストール方法

ミックさんの書籍「ゼロから始めるデータベース操作」を学習するにあたり、この本ではWindowsでPostgreSQLをインストールして読み進めるように書かれていますが、MacでMySQLをインストールして読み進めたかったので方法を記事にします。
51MqhDGZFlL._SX260_.jpg

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

さいごに

以上です!ありがとうございました!

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

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 |
+---------+-------+
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

JavaからMySQLのデータベースにアクセルする時に発生する例外の対処法

JavaでMySQLのデータベースにアクセスしようとしたら拒否されて例外が発生してアクセスできなかったので、色々と調べていました。

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

どうやらrootユーザが設定されていなくてこのようなエラーが発生することがあるようです。

このエラーが出た時はまずMySQLを停止してから、オプション付きで起動することによって解決しました。

1、まずは一旦停止します。

# service mysqld stop

2、次にMySQLを–skip-grant-tablesオプション付きで起動します。
これはMySQLの権限システムを使用しないで起動するためのものだそう。

# mysqld_safe --skip-grant-tables &

僕の場合はこれで解決しました。

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

AWSへデプロイ後にユーザー情報が更新できない現象への対処法

AWSへデプロイ後に、user.saveでユーザー情報が保存できない現象についての対処法

とあるプログラミング学習サイトを利用してRailsを学び、作成したアプリケーションをサーバーへデプロイしたところまでは良かったのですが、その後作成したユーザーのアイコンを変更できない現象に遭遇しました。手探りでの対処で苦戦しましたので、同じことを繰り返さないためにも投稿に残したいと思います。

現象が発生した元のコード

app/controllers/users_controller.rb
  def 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.rb
  def 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
  end

SQLを直に作成して、ActiveRecord::Base.connection.execute(SQL)でMySQLのデータベースを直接更新する方法へ変えました。
(パスワードに関してもトラブルがありましたので、直接暗号化してから保存するコードに書き換えました)

まとめ

プログラミング学習サイトの良いところは、手軽に言語の学習に手をつけられるところですね。しかし現実には実用レベルに達するためにいくつもの壁を越えなければいけないものなのだと実感しています。ローカルでは動いていたけれど、サーバー環境ではうまくいかないことが普通にあるのだとわかりました。これに懲りずにポートフォリオ作りに励もうと思います!

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

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/repository

2.2 herokuでアプリを作成する

terminal
$ heroku create {アプリ名}
Creating *** ...done
https://***.herokuapp.com/ | https://git.heroku.com/***

{アプリ名}は省略可能)

2.3 コードをデプロイする

terminal
$ git push heroku master

できませんでした。

初心者のつまずき2: heroku側とのJDKバージョンのミスマッチ
terminal
remote:        > 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.properties
java.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 MySQLJawsDB MySQLというアドオンがあり、どちらも5MBまでは無料で使えます。

ただ、注意が必要なのが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.yml
spring:
  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 ウェブストア

参考

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