20200204のMySQLに関する記事は11件です。

君は知っているかSequelProの便利な機能

はじめに

最近、自宅に帰ってからSequelProを触るようになり、そこで気づいた小技や初めて使った機能を同期に共有したところ絶賛してくれたので、せっかくなので記事にしようと思いました。

SequelProとは

MysqlのDBを確認できるMac用のGUIアプリケーションです。Mysqlクライアントの中でどれくらいのシェア率があるかまではわからないですが必要な機能は一通り揃っているようです。

なお現在の正式版バージョンは1.1.2であり、このバージョンは最新OSなどで頻繁にクラッシュする報告が多数あり、アップデートも2016年から止まっています。正式版ではなくテストビルド版を使うことでクラッシュを回避することができ、最新のテストビルド版のアップデートは7ヶ月前となっているためクラッシュに悩む人は移行するのもありだと思います。

20200204-211955.png

今回はどちらのバージョンでも使用可能なものについて紹介します。

ちょっと便利な使い方

タブの複製 - 新しいタブで同じDBサーバに接続する

例えばテーブルAを見ているとき、Aと関連のあるテーブルBを並べて見たいっていうときありますよね。わざわざSELECTしてJOINして見るのも面倒だし、Cmd + Tで新しいタブを開いて見ればいいやってなると思います。
SequelProには新規タブでテーブルを開くという機能があります。テーブルを右クリック(もしくは画面左下の歯車のマーク)して選択すると、接続中の同じDBサーバに接続し今見ているテーブルを新しいタブで開くところまでやってくれます。

20200204-214538.png

ショートカットキーがデフォルトでは割り当てられていないので、Mac本体の設定で割り当てておくことをお勧めします。(僕はCmd + Shift + T
これで実質タブの複製が実現できます。

データベース名で絞り込んで移動

例えば、テスト環境にはたくさんのDBが存在するけれど、自分がよく使うのは1つか2つ程度、みたいな環境の人はたくさんいるんじゃないでしょうか。
SequelProでDBを選択するとき、プルダウン形式で選べるのですが、数が多いとスクロールが必要だったり、DB名に番号をつけているような場合辞書順なため1の次は10だったりで少し探しづらいです。
SequelProのショートカットにCmd + Shift + D(データベースへ移動)が割り振られており、これでDBの名前で絞り込み、Enterで即移動することができます。

20200204-220932.png

移動した後はフォーカスがFilter(テーブルの検索)になっていると思うのでマウスを持たずに一連の動作が可能です。

カラム名でテーブルを検索したり情報を見たりする

Cmd + Opt + Ctl + Nというちょっと押しづらいショートカットを使うと、ナビゲーターというものが現れます。ここでは、接続中のサーバの全DBのテーブル名やカラム名を検索をすることができます。検索したカラムをクリックするとメインの画面の方でそのテーブルに移動してくれます。
「あのデータのカラムはnicknameって名前だったけど、なんて名前のテーブルだっけ」みたいなときにnicknameですぐに検索できます。一緒に型など簡単な情報も出てくるので、探したかったものかどうかもその場でわかります。

20200204-221838.png

逆にsyncを押すとメイン画面で見ているテーブルの情報がナビゲーターに表示されます。テーブル情報タブより情報量は少ないですが最低限の情報が見れるのでクエリを書くときなどは便利ではないでしょうか。

20200204-221921.png

ただし、DBの数やカラムが多い場合は検索するとSequelProが落ちてしまうので注意しましょう。

ショートカットから補完機能を呼び出す

クエリタブからクエリを実行できる機能って便利ですよね。履歴が残せたり、行を選んで実行できたりと嬉しい機能が備わっています。便利な機能の一つに、自動で入力候補を補完してくれる機能があるのですが、自然に出てくる候補はDB名、テーブル名、カラム名など区別なく出てきてしまうため、絞り込み切るのに長い文字を打たないといけないことがあります。

20200204-222937.png

そこで、Cmd + Opt + {1, 2, 3}を使うことで、候補となる元の項目を絞ることができます。Cmd + Opt + 1だとDB名から、2ならテーブル名、3ならカラム名と候補の元を先に絞り込めます。下の画像はCmd + Opt + 2でテーブル名の補完を呼び出したあと'm'と入力した場合です。最初の画像とは候補が変わっていて探しやすくなっています。

20200204-222817.png

カラムを複数条件で楽に検索

テーブルを選択した後、Cmd + Fでレコードの絞り込みができることは、ほとんどの人がご存知だと思います。フィルターの横にあるボタンで条件を増やしAND検索できることも、ある程度SequelProを触っている人はご存知の機能だと思います。
(2020/2/6追記)バージョン1.1.2だとこのボタンは存在しないようです。

20200204-224656.png

この検索ですが、カラムを決めて演算子を決めて入力をするという、当たり前ですが少し面倒な作業に感じます。特定の1レコードを探したい場合はユニークキーで検索すれば条件は一つで済みますが、複数のレコードをざっと見たいときなどはイマイチです。

そんなモヤモヤを解消してくれるのが、Cmd + Shift + Fによるフィルターです。メイン側の画面に表示されているレコードと同じテーブル形式の入力欄があり、そこの各カラムに検索条件を入れてあげると設定された演算子(デフォルトはLIKE)で絞り込みをしてくれます。ウィンドウの右下で、検索に使う演算子を決めることもできます。
同じ行同士の条件はAND、別の行同士の条件はOR検索としてフィルターすることができます。

20200204-231642.png

どのカラムも常に同じ条件なのがデメリットですが、ある程度のレコードを絞るような検索はこれで十分便利と思います。(WHERE queryの編集の仕方はわからなかった?)

さいごに

SequelProを使うようになってから時間の浅いひよっこなので、慣れた人は普段から使っていた機能かもしれません。僕と同じような駆け出しの方にこの記事が役立てば良いと思います。
他にも便利な機能がありましたらぜひ教えてください。

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

ActiveRecord::PendingMigrationErrorと表示された時の解決法!

記事の目的

rails db:migrateでマイグレーションできない問題に対しての対処法を共有すること。

状況

モデル作成時に
rails g model postsのようにpostとしなければならないところを複数形で書いてしまったため、一度削除した。その後、rails g model postでモデルを作りrails db:migrateをしたところ、
ActiveRecord::PendingMigrationError
というエラーが発生。

(もしかしたら削除後にbundle exec rails db:migrateを行なっていなかったことが原因の可能性あり。)

対処法

ActiveRecord::PendingMigrationErrorって何?

簡単にいうと、未実行のmigrationがある場合に出てくるエラー。
自分の場合はrails db:migrateをしても解決しなかったのでデータベースをいじってみることにした。

最初に試したこと

マイグレーションがcreatできてないと考え、まずはデータベースの中を$ rails dbconsoleのあと確認。

MySQL [app_development]> SHOW TABLES;
+---------------------------+
| Tables_in_app_development |
+---------------------------+
| ar_internal_metadata      |
| schema_migrations         |
+---------------------------+
2 rows in set (0.00 sec)

MySQL [app_development]> SHOW DATABASES; 
+--------------------+
| Database           |
+--------------------+
| information_schema |
| app_development    |
| app_test           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.01 sec)

postテーブルはない...。
でもrails db:createは実行されている。

対処できた処理

ここで、schema_migrationsをみてみる。

MySQL [app_development]> SELECT * FROM schema_migrations;
+----------------+
| version        |
+----------------+
| 20200202112028 |
+----------------+
1 row in set (0.00 sec)

schema_migrationsとは!?

Railsのschema_migrationsはどのマイグレーションスクリプトまで実行済みなのかを記録するためのテーブル。

つまり、今回は実際にテーブルには反映されていないけどRailsは作ったよと言い張っている感じ。

このファイルがあると新しくモデルを作るときに邪魔なので削除する。

MySQL [app_development]> DELETE FROM schema_migrations WHERE VERSION=20200202112028 ;
Query OK, 1 row affected (0.06 sec)

確認すると、

MySQL [app_development]> SELECT * FROM schema_migrations;
Empty set (0.00 sec)

空になっている!!!!
exitで抜けてrails db:migrateすると、

== 20200202112028 CreatePosts: migrating ======================================
-- create_table(:posts)
   -> 0.2196s
== 20200202112028 CreatePosts: migrated (0.2264s) =============================

となり無事作成することができた!

終わりに

データベースでおかしいことがあればSHOWなどで中身を見る癖をつければトラブルシューティングになりそう!

おかしなところがあればフィードバックをください!

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

MySQLで足りない日付を埋めたい

何かのデータを日付ごとに出したい時、

SELECT date_format(created, '%Y-%m-%d') AS date,
       count(id) AS count
FROM users
GROUP BY date;

とすると、

+------------+--------+
| date       | count  |
+------------+--------+
| 2020-02-04 |     1  |
| 2020-02-02 |     2  |
| 2020-01-31 |     4  |
+------------+--------+

createdに存在しない日付は飛ばされてしまいます。

解決

  1. 日次ごとの日付テーブルを作成し、
  2. そこに必要なテーブルをJOINしていきます

日次ごとの日付テーブルを作成

SELECT CURDATE() - INTERVAL seq_no DAY AS date
FROM
  (SELECT @seq_no := 0 AS seq_no
   UNION SELECT @seq_no := @seq_no + 1 AS seq_no
   FROM information_schema.COLUMNS LIMIT 5) tmp

+------------+
| date       |
+------------+
| 2020-02-04 |
| 2020-02-03 |
| 2020-02-02 |
| 2020-02-01 |
| 2020-01-31 |
+------------+

必要なテーブルをJOIN

SELECT date_table.date AS '日付',
       IFNULL(count_table.count, 0) AS '登録者数'
FROM
  (SELECT CURDATE() - INTERVAL seq_no DAY AS date
   FROM
     (SELECT @seq_no := 0 AS seq_no
      UNION SELECT @seq_no := @seq_no + 1 AS seq_no
      FROM information_schema.COLUMNS LIMIT 5) tmp) date_table
LEFT JOIN
  (SELECT date_format(created, '%Y-%m-%d') AS date,
          count(id) AS COUNT
   FROM users
   GROUP BY date) count_table ON date_table.date = count_table.date;

+------------+--------+
| date       | count  |
+------------+--------+
| 2020-02-04 |     1  |
| 2020-02-03 |     0  |
| 2020-02-02 |     2  |
| 2020-02-01 |     0  |
| 2020-01-31 |     4  |
+------------+--------+

IFNULL(count_table.count, 0)で、JOINしたテーブルに日付が存在しない場合は、count数を0に指定しています。

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

Ubuntu に Docker + MySQL を入れる

Ubuntu に Docker + MySQL を入れてみる

Ubuntu の環境は既に作成済なのが前提
express と接続して中身見れるようにするのは次回

  • PC環境
    • Vagrant 2.2.7
      • VirtualBox 6.1.2
        • Ubuntu 18.04
          • ここに Docker-CE + MySQL を入れていく
          • 便利なので Docker-Compose も使うよ

Docker をインストールする

参考サイトを見ながらやれば、特に引っ掛からないはず。

Docker インストール前準備

# apt更新
$ sudo apt-get update

# aptがHTTPS経由でリポジトリを使用できるようにする
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

# Docker公式GPGキー追加
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# キーを確認
$ sudo apt-key fingerprint 0EBFCD88

# stable設定
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Docker インストール

# apt更新
$ sudo apt-get update

# 最新バージョンをインストール
$ sudo apt-get install docker-ce

Docker インストール後の話

# docker グループを作成する
$ sudo groupadd docker

# ユーザを docker グループに追加する
$ sudo usermod -aG docker $USER

# 再起動してグループメンバーシップを認識させる
$ sudo reboot
# sudo なしで docker が動くのを確認
$ docker run hello-world

↓こんなのが出ます。タイミングとかで Digest が変わったりとかはするかも。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:9572f7cdcee8591948c2963463447a53466950b3fc15a247fcad1917ca215a2f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Docker-Compose をインストールする

出来るだけ最新の方がいいかも。
最新は、Docker compose release pageにある。
今は、 1.25.4 が最新?

# 最新をダウンロード
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 実行権限を付与
$ sudo chmod +x /usr/local/bin/docker-compose

# インストール確認
$ docker-compose --version

インストール確認すると↓のような出力が出る。

docker-compose version 1.25.4, build 8d51620a

MySQL をインストールする

簡単に試す1

参考サイト->https://qiita.com/astrsk_hori/items/e3d6c237d68be1a6f548
公式のmysqlイメージがあるので、↓これだけで使えるみたい

docker pull mysql
docker run --name mysql -e MYSQL_ROOT_PASSWORD=mysql -d -p 3306:3306 mysql

簡単に試す2

参考サイト->https://budougumi0617.github.io/2018/05/20/create-instant-mysql-by-docker/
途中までは読めたけどまだ分かんないから後でちゃんと読む

簡単だけど簡単じゃない方?

ちゃんと自分でDBを作成してテーブルを作る
参考サイト->https://qiita.com/tiwu_official/items/9ffc8e1fd1173b1a9e40
細かく試した話は後で追記します

参考

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

AWSのRDSからdumpをとる方法

やりたいこと

ローカルのデータベースを本番のもので置き換えて動作検証がしたい。
そのためにRDSで作成している本番DBからdumpをとりたい!

やりかた

本番DBとローカルでsshトンネルを開通させる→dumpをとるコマンドを実行。

ポートフォワーディング(トンネル開通)とは?

https://www.clear-code.com/blog/2014/9/12.html
今回はローカルのポートから踏み台サーバーを経由してDBに接続する。

実行コマンド

ポートフォワーディング

必要な情報の取得方法は後述します。

ssh -N (実行ユーザーのuser name)@踏み台のIPアドレス -L ローカルのポート番号:DBのエンドポイント:DBのポート番号

必要によって以下のオプションを指定
-i: 秘密鍵の指定
-f: バックグラウンドで実行

DBのエンドポイント・ポート番号

Screen Shot 2020-02-04 at 17.01.15.png

RDS→Databases→該当DBの Endpoint namePort をコピペ

踏み台のIPアドレス

EC2→Instances→該当インスタンスをチェックしたときに下に出てくる

Screen Shot 2020-02-04 at 17.11.35.png

このタブ内にある IPv4 Public IP をコピペ

ローカルのポート番号

現在使っていない番号だったら何でもOK。例えば今回は既に 3316 を使っていたので 3317 にした。

dumpをとるコマンド

これでコンソールからコマンドを打ってdumpが取れる状態になったので、以下でdumpをとる。

mysqldump -u <ユーザー名> -p -h 127.0.0.1 -P 3317 <DB名> > 20200204.dump

パスワードを求められるので入力。このユーザー名とパスワードはRDSのDBのもの。
mysqlの場合は localhost ではなく 127.0.0.1 とする必要があります。
これでdumpが取れました!?

補足

mysqldump: Couldn't execute 'SELECT COLUMN_NAME,
こんな感じで怒られる場合は、dumpのコマンドに --skip-column-statistics オプションを追加して以下のようにして下さい。

mysqldump --skip-column-statistics -u <ユーザー名> -p -h 127.0.0.1 -P 3317 <DB名> > 20200204.dump
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MySQL の Docker コンテナで実行した SQL の履歴を保持する

MySQL クライアントの mysql コマンドで実行した SQL は、~/.mysql_hisotry というファイルに保存されるのですが、docker-compose down とかしてコンテナを削除すると、当然このファイルも消えてしまい、履歴が消えてしまいます。
これでは不便なので、ホスト側にファイルを書き込むようにして、毎回これをマウントする方法を考えました。

まずホスト側に .mysql_history を保存するディレクトリを作ります。
名前や場所はなんでも構いません。

$ mkdir -p docker/mysql/history

次にこれをマウントし、環境変数 MYSQL_HISTFILE.mysql_history の保存先を変更します。
マウント先もファイル名も、MYSQL_HISTFILE でパスさえ指定できれば、どこでも構いません。

$ docker run --rm -e MYSQL_HISTFILE=/root/.config/mysql/.mysql_hisotry -v ${PWD}/docker/mysql/history:/root/.config/mysql mysql

docker-compose.yml の場合はこんな感じ。

version: '3'
services:
  mysql:
    container_name: mysql
    image: mysql
    restart: always
    volumes:
      - ./docker/mysql/data:/var/lib/mysql
      - ./docker/mysql/history:/root/.config/mysql  # ← これと
    environment:
      MYSQL_HISTFILE: /root/.config/mysql/.mysql_hisotry  # ← これ

やってみると簡単だけど、ググってもあまり情報が見付からなかったのでメモでした。

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

『 Laravel DB.com 』コード書かずにCRUD作成【最新版 2020/02/01 〜利用方法まとめ〜】

「 Laravel DB.com 」 、利用方法まとめ

2020年2月1日リニューアルしたので、使用方法をまとめたいと思います。
en.jpg

Laravel DB.com ってなに?

「LaravelDB.com」は、ER図(テーブルの設計)を作成することで、”Migration” OR ”CRUD(テストデータ)”のコードまで生成できるサービス(ツール)です。

確認したLaravel動作環境

  • 開発環境: Laravel5.5 ~ 6.x / PHP7.2.1 / MySQL5.6.38
  • 確認環境: Mac: Chromeブラウザ

メリット

  • インストール不要
  • テーブル設計をクラウドに保存可能 (他アプリの設計に使い回せる!)
  • Migration自動生成
  • CRUD自動生成
  • テストデータ(Faker)自動生成
  • Validation自動生成(テーブル設計時のカラム型を参照して作成してる。※Enum型は自分でCODE修正必要かも)
  • Webサービスだから、どのPCでも同じデータを活用して作成できる

さあ、 LaravelDB.com はじめて行きましょう!

操作方法(Youtubu)

【 CRUD: 新しいプロジェクトを用意 】

最低限Laravelがインストールした状態を準備します!
1. この時点ではまだLOGINは作らないように!
2. .env と MySQLのDB準備はしておきましょう。
image.png

【 LaravelDB.comへ ログイン 】

Googleアカウントのみログイン可能です。(画面右上 OR ページ下部の中央)
LaravelDB.com
en.jpg

【 LaravelDB.comの POINT!! 】

ER図を作成していきますが重要事項があります!

<<重要>>
主キーのAutoIncrementは どのテーブルも『 id 』 と固定すること!!

image.png

LaravelのEloquentModel を便利に使うためには、どのテーブルも 『 id 』 と固定するのが吉です。
理由は「 モデル名::find($id); 」と便利に使う場合は 主キーのAutoIncrement 『 id 』 名にしておかないと動作しないからです( Laravelを勉強してる人はなんとなく知ってることでしょうか )。
※ laravelDB.comのCRUDでも生成されるファイルは「 ○○○::find($id); 」を使ってるためそ!
※ laravelに最初から入っているテーブル「user」「password_resets」は作成しないこと(migrate時に上書きしてしまいます)
※慣れれば簡単ですが、少しだけ慣れる時間は必要ですね。


【 CRUDを生成してみる! 】

  1. まずは、ER図を簡単に作ってみましょう!! その後に右メニュー「 ER図のLoad/Save 」をクリックすると以下画面が表示されます。
  2. 外部キーを沢山つけてる場合は、Migrationの順番が重要なので試す場合は「OFF」がオススメです。
  3. 「 Laravel( CRUD BUILD) 」 ボタンをクリックでファイルが生成されます!!

【 ダウンロードファイルを確認しましょう 】

  1. Zip圧縮ファイルがダウンロードされるので、Zipを展開(解凍)して中を見てみましょう!。CRUDに必要なファイルが一式入っています。
  2. 下図:左側(CRUDファイル)、右図laravelのフォルダ

【移行方法】
Macの場合: 「Optionキー + ドラッグ&ドロップ」 → 「結合」でフォルダの上書きではなく、結合になります。
Winの場合:「ドラッグ&ドロップ」で結合できます。

ダウンロードした各フォルダを上記の方法で移動しましょう!

【 LaravelのHOMEページを表示しましょう 】

私の環境では「http://localhost/

【 「 コマンド 」 を3つ順番に打ちましょう! 】

<<重要>>
 DBや.env設定など最低限の設定を完了しておくこと!!

php artisan migrate

composer update

//テストデータいらない場合は打たなくてもOK
php artisan db:seed

以上3つです。

【 完成: ブラウザで確認しましょう! 】

http://localhost/ (URLは開発環境によって異なります) で確認しましょう!
あなたが作ったテーブルのCRUD画面へ遷移できますよ!!

welcome.blade.php

作成されたindex/show/editの画面
基本的な処理が最初から出来てます!捗りそうですね!
image.png

Validationがスゴイ! → テーブル設計に合わせて生成

例でざっくりテーブルをER図で書いてみました。
以下"t_gsusers"テーブルを中心に見ていきます。

生成されたコントローラーのcreate(),edit()にはこういったvalidationが挿入されます。

TGsusersController
            $this->validate($request, [
                "name" => "required|max:128", //string('name',128)
                "lid" => "required|max:128", //string('lid',128)
                "lpw" => "required|max:128", //string('lpw',128)
                "m_department_id" => "required|integer", //integer('m_department_id')
                "m_position_id" => "required|integer", //integer('m_position_id')
                "m_prefectures_id" => "required|integer", //integer('m_prefectures_id')
                "m_kanri_id" => "required|integer", //integer('m_kanri_id')
                "m_lifeflg_id" => "required|integer", //integer('m_lifeflg_id')
                "m_test_id" => "required|integer", //integer('m_test_id')

            ]);

{{old('name')}} → 入力項目を補完

validationで未入力等ではじかれた場合、入力した文字を消さずに表示します。

date,datetime型 → 入力フォー厶type="date"

  • 画面表示側もtype='date'
  • validation側もdateチェックが入ります。

ER図外部キー設定→JOIN自動生成 QueryBuilderをController側にコメントで用意

イチからQueryBuilderを使用して、JOINを書くのは大変です。ベースになる部分は生成してくれます。使用する場合はコメントになってるのでコメントを外し、上記に書かれてるコードのEloquentModelの1行をコメントして使います。

※機械的に作成してるため、より良い記述に変更は必要になります。

動作した後はコードを見ると良いでしょう

  • Routing
  • Controller
  • Views
  • Model 後は、自分で変更をいれていくだけですね。

日本発 Laravelツール

日本から海外でも使われるプロダクトになることを願っております。

Twitter: LaravelDB.com


以上

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

最新版『 Laravel DB.com 』コード書かずにCRUD作成~利用方法まとめ~

「 Laravel DB.com 」 、利用方法まとめ

2020年2月2日リニューアルしたので、使用方法をまとめたいと思います。
en.jpg

Laravel DB.com ってなに?

「LaravelDB.com」は、ER図(テーブルの設計)を作成することで、”Migration” OR ”CRUD(テストデータ)”のコードまで生成できるサービス(ツール)です。

確認したLaravel動作環境

  • 開発環境: Laravel5.5 ~ 6.x / PHP7.2.1 / MySQL5.6.38
  • 確認環境: Mac: Chromeブラウザ

メリット

  • インストール不要
  • テーブル設計をクラウドに保存可能 (他アプリの設計に使い回せる!)
  • Migration自動生成
  • CRUD自動生成
  • テストデータ(Faker)自動生成
  • Validation自動生成(テーブル設計時のカラム型を参照して作成してる。※Enum型は自分でCODE修正必要かも)
  • Webサービスだから、どのPCでも同じデータを活用して作成できる

さあ、 LaravelDB.com はじめて行きましょう!

操作方法(Youtubu)

【 CRUD: 新しいプロジェクトを用意 】

最低限Laravelがインストールした状態を準備します!
1. この時点ではまだLOGINは作らないように!
2. .env と MySQLのDB準備はしておきましょう。
image.png

【 LaravelDB.comへ ログイン 】

Googleアカウントのみログイン可能です。(画面右上 OR ページ下部の中央)
LaravelDB.com
en.jpg

【 LaravelDB.comの POINT!! 】

ER図を作成していきますが重要事項があります!

<<重要>>
主キーのAutoIncrementは どのテーブルも『 id 』 と固定すること!!

image.png

LaravelのEloquentModel を便利に使うためには、どのテーブルも 『 id 』 と固定するのが吉です。
理由は「 モデル名::find($id); 」と便利に使う場合は 主キーのAutoIncrement 『 id 』 名にしておかないと動作しないからです( Laravelを勉強してる人はなんとなく知ってることでしょうか )。
※ laravelDB.comのCRUDでも生成されるファイルは「 ○○○::find($id); 」を使ってるためそ!
※ laravelに最初から入っているテーブル「user」「password_resets」は作成しないこと(migrate時に上書きしてしまいます)
※慣れれば簡単ですが、少しだけ慣れる時間は必要ですね。


【 CRUDを生成してみる! 】

  1. まずは、ER図を簡単に作ってみましょう!! その後に右メニュー「 ER図のLoad/Save 」をクリックすると以下画面が表示されます。
  2. 外部キーを沢山つけてる場合は、Migrationの順番が重要なので試す場合は「OFF」がオススメです。
  3. 「 Laravel( CRUD BUILD) 」 ボタンをクリックでファイルが生成されます!!

【 ダウンロードファイルを確認しましょう 】

  1. Zip圧縮ファイルがダウンロードされるので、Zipを展開(解凍)して中を見てみましょう!。CRUDに必要なファイルが一式入っています。
  2. 下図:左側(CRUDファイル)、右図laravelのフォルダ

【移行方法】
Macの場合: 「Optionキー + ドラッグ&ドロップ」 → 「結合」でフォルダの上書きではなく、結合になります。
Winの場合:「ドラッグ&ドロップ」で結合できます。

ダウンロードした各フォルダを上記の方法で移動しましょう!

【 LaravelのHOMEページを表示しましょう 】

私の環境では「http://localhost/

【 「 コマンド 」 を3つ順番に打ちましょう! 】

<<重要>>
 DBや.env設定など最低限の設定を完了しておくこと!!

php artisan migrate

composer update

//テストデータいらない場合は打たなくてもOK
php artisan db:seed

以上3つです。

【 完成: ブラウザで確認しましょう! 】

http://localhost/ (URLは開発環境によって異なります) で確認しましょう!
あなたが作ったテーブルのCRUD画面へ遷移できますよ!!

welcome.blade.php

作成されたindex/show/editの画面
基本的な処理が最初から出来てます!捗りそうですね!
image.png

Validationがスゴイ! → テーブル設計に合わせて生成

例でざっくりテーブルをER図で書いてみました。
以下"t_gsusers"テーブルを中心に見ていきます。

生成されたコントローラーのcreate(),edit()にはこういったvalidationが挿入されます。

TGsusersController
            $this->validate($request, [
                "name" => "required|max:128", //string('name',128)
                "lid" => "required|max:128", //string('lid',128)
                "lpw" => "required|max:128", //string('lpw',128)
                "m_department_id" => "required|integer", //integer('m_department_id')
                "m_position_id" => "required|integer", //integer('m_position_id')
                "m_prefectures_id" => "required|integer", //integer('m_prefectures_id')
                "m_kanri_id" => "required|integer", //integer('m_kanri_id')
                "m_lifeflg_id" => "required|integer", //integer('m_lifeflg_id')
                "m_test_id" => "required|integer", //integer('m_test_id')

            ]);

{{old('name')}} → 入力項目を補完

validationで未入力等ではじかれた場合、入力した文字を消さずに表示します。

date,datetime型 → 入力フォー厶type="date"

  • 画面表示側もtype='date'
  • validation側もdateチェックが入ります。

ER図外部キー設定→JOIN自動生成 QueryBuilderをController側にコメントで用意

イチからQueryBuilderを使用して、JOINを書くのは大変です。ベースになる部分は生成してくれます。使用する場合はコメントになってるのでコメントを外し、上記に書かれてるコードのEloquentModelの1行をコメントして使います。

※機械的に作成してるため、より良い記述に変更は必要になります。

動作した後はコードを見ると良いでしょう

  • Routing
  • Controller
  • Views
  • Model 後は、自分で変更をいれていくだけですね。

日本発 Laravelツール

日本から海外でも使われるプロダクトになることを願っております。

Twitter: LaravelDB.com


以上

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

最新版『 Laravel DB.com 』コード書かずに超スピード開発~(DEMO動画あり)~

Laravel DB.com ってなに?

「LaravelDB.com」は、ER図(テーブルの設計)を作成することで、”Migration” OR ”CRUD(テストデータ)”のコードまで生成できるサービス(ツール)です。

DEMO動画(操作方法)

en.jpg


「 Laravel DB.com 」 、利用方法まとめ

2020年2月2日リニューアルしたので、使用方法をまとめたいと思います。
注意)以前に見たことがある人は「PWA」でChcheAPIが効いてて古い画面のままかもしれません。
その場合には、[開発者ツール]→[Application]→[Clear Storage]でキャッシュを削除してください。

確認したLaravel動作環境

  • 開発環境: Laravel5.5 ~ 6.x / PHP7.2.1 / MySQL5.6.38
  • 確認環境: Mac: Chromeブラウザ

メリット

  • インストール不要
  • テーブル設計をクラウドに保存可能 (他アプリの設計に使い回せる!)
  • Migration自動生成
  • CRUD自動生成
  • テストデータ(Faker)自動生成
  • Validation自動生成(テーブル設計時のカラム型を参照して作成してる。※Enum型は自分でCODE修正必要かも)
  • Webサービスだから、どのPCでも同じデータを活用して作成できる

さあ、 LaravelDB.com はじめて行きましょう!

【 CRUD: 新しいプロジェクトを用意 】

最低限Laravelがインストールした状態を準備します!
1. この時点ではまだLOGINは作らないように!
2. .env と MySQLのDB準備はしておきましょう。
image.png

【 LaravelDB.comへ ログイン 】

Googleアカウントのみログイン可能です。(画面右上 OR ページ下部の中央)
LaravelDB.com
en.jpg

【 LaravelDB.comの POINT!! 】

ER図を作成していきますが重要事項があります!

<<重要>>
主キーのAutoIncrementは どのテーブルも『 id 』 と固定すること!!

image.png

LaravelのEloquentModel を便利に使うためには、どのテーブルも 『 id 』 と固定するのが吉です。
理由は「 モデル名::find($id); 」と便利に使う場合は 主キーのAutoIncrement 『 id 』 名にしておかないと動作しないからです( Laravelを勉強してる人はなんとなく知ってることでしょうか )。
※ laravelDB.comのCRUDでも生成されるファイルは「 ○○○::find($id); 」を使ってるためそ!
※ laravelに最初から入っているテーブル「user」「password_resets」は作成しないこと(migrate時に上書きしてしまいます)
※慣れれば簡単ですが、少しだけ慣れる時間は必要ですね。


【 CRUDを生成してみる! 】

  1. まずは、ER図を簡単に作ってみましょう!! その後に右メニュー「 ER図のLoad/Save 」をクリックすると以下画面が表示されます。
  2. 外部キーを沢山つけてる場合は、Migrationの順番が重要なので試す場合は「OFF」がオススメです。
  3. 「 Laravel( CRUD BUILD) 」 ボタンをクリックでファイルが生成されます!!

【 ダウンロードファイルを確認しましょう 】

  1. Zip圧縮ファイルがダウンロードされるので、Zipを展開(解凍)して中を見てみましょう!。CRUDに必要なファイルが一式入っています。
  2. 下図:左側(CRUDファイル)、右図laravelのフォルダ

【移行方法】
Macの場合: 「Optionキー + ドラッグ&ドロップ」 → 「結合」でフォルダの上書きではなく、結合になります。
Winの場合:「ドラッグ&ドロップ」で結合できます。

ダウンロードした各フォルダを上記の方法で移動しましょう!

【 LaravelのHOMEページを表示しましょう 】

私の環境では「http://localhost/

【 「 コマンド 」 を3つ順番に打ちましょう! 】

<<重要>>
 DBや.env設定など最低限の設定を完了しておくこと!!

php artisan migrate

composer update

//テストデータいらない場合は打たなくてもOK
php artisan db:seed

以上3つです。

【 完成: ブラウザで確認しましょう! 】

http://localhost/ (URLは開発環境によって異なります) で確認しましょう!
あなたが作ったテーブルのCRUD画面へ遷移できますよ!!

welcome.blade.php

作成されたindex/show/editの画面
基本的な処理が最初から出来てます!捗りそうですね!
image.png

Validationがスゴイ! → テーブル設計に合わせて生成

例でざっくりテーブルをER図で書いてみました。
以下"t_gsusers"テーブルを中心に見ていきます。

生成されたコントローラーのcreate(),edit()にはこういったvalidationが挿入されます。

TGsusersController
            $this->validate($request, [
                "name" => "required|max:128", //string('name',128)
                "lid" => "required|max:128", //string('lid',128)
                "lpw" => "required|max:128", //string('lpw',128)
                "m_department_id" => "required|integer", //integer('m_department_id')
                "m_position_id" => "required|integer", //integer('m_position_id')
                "m_prefectures_id" => "required|integer", //integer('m_prefectures_id')
                "m_kanri_id" => "required|integer", //integer('m_kanri_id')
                "m_lifeflg_id" => "required|integer", //integer('m_lifeflg_id')
                "m_test_id" => "required|integer", //integer('m_test_id')

            ]);

{{old('name')}} → 入力項目を補完

validationで未入力等ではじかれた場合、入力した文字を消さずに表示します。

date,datetime型 → 入力フォー厶type="date"

  • 画面表示側もtype='date'
  • validation側もdateチェックが入ります。

ER図外部キー設定→JOIN自動生成 QueryBuilderをController側にコメントで用意

イチからQueryBuilderを使用して、JOINを書くのは大変です。ベースになる部分は生成してくれます。使用する場合はコメントになってるのでコメントを外し、上記に書かれてるコードのEloquentModelの1行をコメントして使います。

※機械的に作成してるため、より良い記述に変更は必要になります。

動作した後はコードを見ると良いでしょう

  • Routing
  • Controller
  • Views
  • Model 後は、自分で変更をいれていくだけですね。

日本発 Laravelツール

日本から海外でも使われるプロダクトになることを願っております。

Twitter: LaravelDB.com


以上

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

コード書かずに超スピード開発~(DEMO動画あり)~最新版『 Laravel DB.com 』

Laravel DB.com ってなに?

「LaravelDB.com」は、ER図(テーブルの設計)を作成することで、”Migration” OR ”CRUD(テストデータ)”のコードまで生成できるサービス(ツール)です。

DEMO動画(操作方法)

en.jpg

注意)以前に見たことがある人は「PWA」でChcheAPIが効いてて古い画面のままかもしれません。
その場合には、[開発者ツール]→[Application]→[Clear Storage]でキャッシュを削除してください。

「 LaravelDB.com 」の特徴

  • Webサービスだから「 家・会社のパソコン 」でも同じデータを活用できる
  • テーブル設計をクラウドに保存可能 ( 他アプリの設計に使い回せる! )
  • Migration自動生成 / CRUD自動生成 / テストデータ(Faker)自動生成
  • Validation(テーブル設計時のカラム型を参照して自動生成 ※Enum型は自分でCODE修正必要かも...)
  • 確認環境: Mac: Chromeブラウザ
  • 開発環境: Laravel5.5 ~ 6.x / PHP7.2.1 / MySQL5.6.38

【 CRUD: 新しいプロジェクトを用意 】

最低限Laravelがインストールした状態(Welcomeページ表示)を準備します!
1. この時点ではまだLOGINは作らないように!
2. .env と MySQLのDB準備はしておきましょう。
image.png

【 LaravelDB.comへ ログイン 】

Googleアカウントのみログイン可能です。(画面右上 OR ページ下部の中央)
LaravelDB.com
en.jpg

【 LaravelDB.comの POINT!! 】

ER図を作成していきますが重要事項があります!

<<重要>>
主キーのAutoIncrementは どのテーブルも『 id 』 と固定すること!!

image.png

LaravelのEloquentModel を便利に使うためには、どのテーブルも 『 id 』 と固定するのが吉です。
理由は「 モデル名::find($id); 」と便利に使う場合は 主キーのAutoIncrement 『 id 』 名にしておかないと動作しないからです( Laravelを勉強してる人はなんとなく知ってることでしょうか )。
※ laravelDB.comのCRUDでも生成されるファイルは「 ○○○::find($id); 」を使ってるためそ!
※ laravelに最初から入っているテーブル「user」「password_resets」は作成しないこと(migrate時に上書きしてしまいます)
※慣れれば簡単ですが、少しだけ慣れる時間は必要ですね。


【 CRUDを生成してみる! 】

  1. まずは、ER図を簡単に作ってみましょう!! その後に右メニュー「 ER図のLoad/Save 」をクリックすると以下画面が表示されます。
  2. 外部キーを沢山つけてる場合は、Migrationの順番が重要なので試す場合は「OFF」がオススメです。
  3. 「 Laravel( CRUD BUILD) 」 ボタンをクリックでファイルが生成されます!!

【 ダウンロードファイルを確認しましょう 】

  1. Zip圧縮ファイルがダウンロードされるので、Zipを展開(解凍)して中を見てみましょう!。CRUDに必要なファイルが一式入っています。
  2. 下図:左側(CRUDファイル)、右図laravelのフォルダ

【移行方法】
Macの場合: 「Optionキー + ドラッグ&ドロップ」 → 「結合」でフォルダの上書きではなく、結合になります。
Winの場合:「ドラッグ&ドロップ」で結合できます。

ダウンロードした各フォルダを上記の方法で移動しましょう!

【 LaravelのHOMEページを表示しましょう 】

私の環境では「http://localhost/

【 「 コマンド 」 を3つ順番に打ちましょう! 】

<<重要>>
 DBや.env設定など最低限の設定を完了しておくこと!!

php artisan migrate

composer update

//テストデータいらない場合は打たなくてもOK
php artisan db:seed

3つ目のコマンドはテストデータ登録の実行コマンド

Faker注意点有り!

テストデータ登録「 database/seeds/以下 」Fakerファイルの中はこんな感じです。
TUsersTableSeeder_php_—_test3.jpg
自動で文字が入ってるので、精度はまあこんなもんですかね。※文字列、数値、日付は自動で判定して入れてくれてるようです。
Fakerで使えるタイプ一覧、 自身で変更して使いたい場合はこちらを参考にすることをオススメします。

「address」や「url」を使う場合はカラムサイズに気をつけましょう!

【 完成: ブラウザで確認しましょう! 】

http://localhost/ (URLは開発環境によって異なります) で確認しましょう!
あなたが作ったテーブルのCRUD画面へ遷移できますよ!!

welcome.blade.php

作成されたindex/show/editの画面
基本的な処理が最初から出来てます!捗りそうですね!
image.png

Validationがスゴイ! → テーブル設計に合わせて生成

例でざっくりテーブルをER図で書いてみました。
以下"t_gsusers"テーブルを中心に見ていきます。

生成されたコントローラーのcreate(),edit()にはこういったvalidationが挿入されます。

TGsusersController
            $this->validate($request, [
                "name" => "required|max:128", //string('name',128)
                "lid" => "required|max:128", //string('lid',128)
                "lpw" => "required|max:128", //string('lpw',128)
                "m_department_id" => "required|integer", //integer('m_department_id')
                "m_position_id" => "required|integer", //integer('m_position_id')
                "m_prefectures_id" => "required|integer", //integer('m_prefectures_id')
                "m_kanri_id" => "required|integer", //integer('m_kanri_id')
                "m_lifeflg_id" => "required|integer", //integer('m_lifeflg_id')
                "m_test_id" => "required|integer", //integer('m_test_id')

            ]);

{{old('name')}} → 入力項目を補完

validationで未入力等ではじかれた場合、入力した文字を消さずに表示します。

date,datetime型 → 入力フォー厶type="date"

  • 画面表示側もtype='date'
  • validation側もdateチェックが入ります。

ER図外部キー設定→JOIN自動生成 QueryBuilderをController側にコメントで用意

イチからQueryBuilderを使用して、JOINを書くのは大変です。ベースになる部分は生成してくれます。使用する場合はコメントになってるのでコメントを外し、上記に書かれてるコードのEloquentModelの1行をコメントして使います。

※機械的に作成してるため、より良い記述に変更は必要になります。

動作した後はコードを見ましょう!

最低限のコードは出来上がってます!あとは、仕様に合わせて修正・追加していきましょう!!!
- Routing
- Controller
- Views
- Model
後は、自分で変更をいれていくだけですね。

Laravel専用ツール!!

日本から世界へ!世界で使われるプロダクトになることを願っております。
是非、応援の程よろしくお願いいたしますm(_ _)m

Twitter: LaravelDB.com


LaravelDB.com解説ページ一覧

LaravelDB.com 対応カラム一覧

https://qiita.com/daisu_yamazaki/items/92dc3cc599a264c3fb0f

LaravelDB.com テーブル命名ルール

https://qiita.com/daisu_yamazaki/items/1cb5987cc6d1008def82

LaravelDb.com integerの注意点

https://qiita.com/daisu_yamazaki/items/f2e6d58cfa20fa81fd54

LaravelDB.com Faker(テストデータ投入)

https://qiita.com/daisu_yamazaki/items/57669e8fa2c256d85c95

以上

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

?【DBeaver】アプリからドライバファイルが取得できない場合の設定方法

環境

Windows 10
DBeaver Community Edition 6.3.4

やりたいこと

外部接続が制限されている環境下ではドライバファイルが取得できないためDBへ接続できない
なので下記のようなエラーが表示されるがそれを直接設定で解消する

尚、今回の対象はMySQLです


余談ですがbeaverが新規絵文字に追加されたみたいですね
https://unicode.org/emoji/charts-13.0/emoji-released.html#1f9ab


Resolve libraries「Error resolving driver libraries」

接続がブロックされて対象ファイルが取得できない状態かと思われる

dbeaver.png

Error resolving dependencies
 Maven artifact 'maven:/mysql:mysql-connector-java:RELEASE' not found

接続エラー「com.mysql.jdbc.Driver」

Driverファイルが指定されていない場合に表示される

db3.png

com.mysql.jdbc.Driver

Can't create driver instance
  Error creating driver 'MySQL' instance.
Most likely required jar files are missing.
You should configure jars in driver settings.

Reason: can't load driver class 'com.mysql.jdbc.Driver'
  Error creating driver 'MySQL' instance.
Most likely required jar files are missing.
You should configure jars in driver settings.

Reason: can't load driver class 'com.mysql.jdbc.Driver'
    com.mysql.jdbc.Driver
    com.mysql.jdbc.Driver

接続エラー「Connection refused: connect」

db5.png

Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
  Connection refused: connect

接続エラー「SSH_MSG_DISCONNECT: 2 Too many authentication failures」

設定が色々とだめなとき

db4.png

Can't initialize tunnel
  Cannot establish tunnel
  Cannot establish tunnel
    SSH_MSG_DISCONNECT: 2 Too many authentication failures 

やったこと

MySQLのwebサイトにアクセス
https://www.mysql.com/products/connector/

JDBC Driver for MySQL (Connector/J)のDownloadリンクをクリック

記事執筆時点の最新「Connector/J 8.0.19」の「Select Operating System:」セレクトボックスから「Platform Independent」を選択
https://dev.mysql.com/downloads/connector/j/

Platform Independent (Architecture Independent), ZIP Archiveをダウンロード

(下の「No thanks, just start my download.」リンククリックで即ダウンロードできる)
db2.png

ZIPを解凍してできた「mysql-connector-java-8.0.19」フォルダを任意のディレクトリに配置する

例:
C:\Users\(ユーザ名)\AppData\Roaming\DBeaverData\drivers\mysql-connector-java-8.0.19

Driverの編集MySQL'にて青く表示されている「mysql:mysql-connector-java:RELEASE [8.0.17]」は使用できないので削除
db4.png

ファイルを追加を押下
db4.png

先ほど配置したフォルダから「mysql-connector-java-8.0.19.jar」を選択
例:
C:\Users\(ユーザ名)\AppData\Roaming\DBeaverData\drivers\mysql-connector-java-8.0.19\mysql-connector-java-8.0.19.jar

クラスを見つけるを押下すると左のセレクトボックスに値が出てくるのでその中から「com.mysql.jdbc.Driver」を選択してOK
db4.png

結果

これで接続可能になるはずです
まだエラーが出る場合は接続設定やSSH設定を見直してみる必要があります

MySQLだと接続タイプが「MySQL」、「MySQL 8+」、「MySQL (Old)」と三種類あるので注意です

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