20190529のMySQLに関する記事は4件です。

Ruby/Ruby on rails/MysqlをDockerで環境構築

DockerでRuby/Ruby on rails/mysqlの環境構築からデプロイまでできたのでメモしておきます。

(1)Dockerfile作成

Dockerfile

FROM ruby:2.5.3


RUN apt-get update -qq && \
    apt-get install -y build-essential \ 
                       libpq-dev \        
                       nodejs           

RUN mkdir /app_name 

ENV APP_ROOT /app_name 
WORKDIR $APP_ROOT

ADD ./Gemfile $APP_ROOT/Gemfile
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock


RUN bundle install
ADD . $APP_ROOT

(2)docker-compose.yml作成

docker-compose.yml
version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: root
    ports:
      - "3306:3306"

  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app_name
    ports:
      - "3000:3000"
    links:
      - db

(3)Gemfile作成

Gemfile
source 'https://rubygems.org'
gem 'rails', '5.2.2'

Gemfile.lockも作成
$ touch Gemfile.lock

(4)新しいアプリを作成

$ docker-compose run web rails new アプリ名 . --force --database=mysql --skip-bundle

databese.ymlを編集

database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password 
  host: db 

Gemfileをbundle install

$ docker-compose run web bundle install

(5)コンテナをビルドと起動

$ docker-compose build # コンテナをビルド

$ docker-compose up # コンテナの一斉起動

※bundle installの後にbuildする

(6)DB作成

$ docker-compose run web rails db:create

DBを作らないとエラーが出る

DBを作成後localhost:3000で初期画面が表示される!

()Herokuでデプロイ

herokuの登録,heroku cliはインストール済みとする

Herokuにアプリ作成

$ heroku create

データベースをMySQLに変更

$ heroku addons:add cleardb

ClearDBアドオンとは,ClearDBというデータベースサービスが提供している,MySQLを使うためのもの。

$ heroku config | grep CLEARDB_DATABASE_URL
mysql:// 〜 reconnect=trueがデータベース情報

mysqlの部分をmysql2に変更

環境変数を変更

$ heroku config:set DATABASE_URL=mysql2:// 〜 reconnect=true     //先ほどのデータベース情報全部
$ git add .
$ git commit -m "update for upload to heroku"

アプリをデプロイ

$ git push heroku master

マイグレーションファイル作成

$ heroku run rake db:migrate

参考

丁寧すぎるDocker-composeによるrails + MySQL on Dockerの環境構築

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

PhpStorm-DB接続(MySql)

右上にあるDatabaseをクリック
画像のようにMySqlをクリック
Screenshot_1.png

画像のように
・Name (なんでもいい)
・Host (僕の場合Docker使用のため)
・User (Mysqlにログインできるユーザー)
・Password (Mysqlにログインできるユーザーのパスワード)
Screenshot_2.png

DriverFileがなければ、画像のような表示が出てきますので、Downloadボタンをクリック
Screenshot_3.png

完了し、パスワードが消えていたら、もう一度打ち直し、Test Connectionボタンをクリック
接続が完了すると、以下のように表示されます。
Screenshot_4.png

もう一度、Databaseを開き、0 of 7をクリックし、表示させたいDBのチェックボックスにチェックを入れる。
Screenshot_6.png

下記のように表示されました。DBの中身、テーブルの中身(カラムとデータ)も見ることができます。また、+ボタンを押下し、その中のConsoleをクリックすると、Console画面が開き、そこでクエリを書くと「Ctrl」+「Enter」で実行することができます。
Screenshot_7.png

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

wslでmysqlを立ち上げて日本語でinsertしようとおもったら

日本語が消える。なぜ

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

Laravel(Eloquent)でLIKE検索で濁点/半濁点を区別したい→LIKE BINARYを使う

確認環境
・laravel v5.7.28
・MySQL 8.0
・PHP 7.3.0

MySQLのLIKEでは濁点/半濁点の区別を行いません。大文字と小文字の区別もしません。
厳密に一致させるときは、LIKE BINARY をつかいます。

ふつうのSQLではこう。

SELECT * FROM user WHERE name LIKE BINARY '%やまだ%;

Eloquentではこうやります。

$user->where('name','LIKE BINARY','%やまだ%');

以前はサポートされていなかったようですが
どこかのタイミングで修正されました。
https://github.com/laravel/framework/commit/76f6da4dab1e9e4847362a2b2b0c428e25805f0c#diff-cc3d43e01028390141596ae0da939930

サポートされていないバージョンを使用していて、アップデートはできないよという場合は
上記コミットと同じようにコードを修正すればOKです。(自己責任)

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