mysql

CentOS7にMySQL5.7インストール

インストール MySQLのドキュメントを見ながら進める https://dev.mysql.com/doc/refman/5.6/ja/linux-installation-yum-repo.htmlどのパッケージをインストールするか確認 $ cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core)EL7ベースであるこ…

【mac】homebrewでMySQL5.6をインストール

homebrewでMySQLをインストールすると5.7がインストールされた。が、今回は5.6を使いたかったのでそのときの手順をメモしておく。MySQL5.7のアンインストール $ brew uninstall mysqlMySQL5.6がインストール可能であることを確認してインストール $ brew sea…

【Rails】MySQLテーブルの文字コードを変更する

テーブルの文字コードをutf8mb4に変更するさいに調べていたが既存のテーブルについては新たにmigrationファイルを作って文字コードを変更するSQLを実行するのが必要そうだったが、調べるのに時間かかったのでメモしておく。$ ./bin/rails g migration change…

【mysql】コミット前のselectの結果が更新前のままだった理由

ネタみたいだけど、また初歩的なミスをしたのでメモ。mysqlクライアントから確認 $ begin; $ insert into tests(id, name) values(1, 'test'); $ select count(*) from tests where id = 1; +----------+ | count(*) | +----------+ | 1 | +----------+期待…

【mysql】date型とnow()を比較する

大した話じゃないけど、ミスったのでメモしておく。calendar idtarget 12017-09-20 22017-09-21 32017-09-22 こんなテーブルがあって、今日(9/21)以下の日付のレコードを抽出したかった。ヒットしない select * from calendar where target <= now();ヒット …

【mysql】特定のキーワードが入っているレコードでソートする方法メモ

こんなことができたのか キーワードがあるものを上にもってくる。 select id, title from daily order by title like "%キーワード%" desc;以上です

【cakephp】サブクエリを実行する方法メモ

サブクエリのサンプルメモ。 ついでにgroup by した結果のレコード数を求めるサンプル。 $dbo = $this->MyTable->getDataSource(); $subQuery = $dbo->buildStatement(array( "fields" => array("distinct MyTable.id"), "table" => "my_table", "alias" => …

【node.js】expressにてmysqlを使う方法メモ

はじめに 今回やりたかったことは以下 ・expressからmysqlへクエリ実行 ・ormは使わずsqlを直接実行したい ・dbの処理部分は共通化したい ・エラー処理も実装するnode-mysqlというライブラリを使いました 実装 ファイル構成 ├── app.js ├── db.js # dbの共通…

【MySQL】最低限の??デッドロック対策メモ

今まであまり気にしてこなかったけどちょっと問題になったのでメモ 今回は同じ様な内容のバッチ処理を多重でいくつも回す実装としたため、更新するテーブル・レコードも同じになってデッドロックが発生しました今回の原因となったのは以下 複数テーブルへの…

【MySQL】複数レコードを一発でupdateする方法メモ 〜 bulk update

はじめに mysqlはちょいちょい使ってきたけど今回はちょっと感動でした。やりたかったことは バッチ処理などで集計結果でテーブルを更新する場合などでしたテーブル例はこんな感じ totalsテーブル カラム内容 idPK count集計結果 今まではこんな感じ実装して…

vpsでサーバー構築するときに必ずやってる設定などまとめ

前にも同じようなこと書いた気がしますが、時間が経つとちょっとずつやってる内容が変わってくるのでメモしておきます。 ちなみにさくらのvpsです sshの設定 作業ユーザーの作成 sudo許可 鍵認証設定 パスワードでのログイン禁止と外部からrootでのログイン…

mysqlからデータを取得してわざわざphpでソートする

はじめに 僕はけっこうコレやります。 どういうときに使うか考えて見る・レコードが多い複数のテーブルをjoinしなくてはならない場合 ・テーブル分割していてそれぞれのテーブルからデータを取得してきて結果をマージしなくてはならない場合などなど テーブ…

【MySQL】外部キー制約とロックとデッドロックについて

はじめに MySQLはよく使っているのですが外部キー制約はほとんど使った事ありませんでした。 使うデメリットとしてはデータの登録作業が面倒だから・・・程度で考えていましたが、今回は既に外部キーを採用しているシステムでの作業でしたがほとんど経験なか…

mysqlへsshポートフォワード(port forwarding)して接続する方法メモ

はじめに mysqlに接続するときは、開発サーバーにログインしてそこからmysqlコマンドで接続・・・という流れが多かったのですが、開発環境によってはwebサーバーはローカルpcでdbはサーバー上のものを使う・・・ なんてこともあるかと思いますそんなときの実…

php・mysqlでミリ秒単位でタイムスタンプを保存する方法メモ

めったにやることもないとは思うけど、今回必要だったのでメモ やりたかったことはphpからmysqlにデータを登録する場合でミリ秒単位でdatetime型のカラムに登録したかったことですmysqlのスキーマ定義 CREATE TABLE table_name (ttt DATETIME(6));DATETIME型…

【fuelphp】MySQLのIN句の使い方メモ

使いたいときはいつも忘れてるので自分用にメモやりたいSQL select * from users where id in (1, 2, 3);fuelphp $user_ids = array(1, 2, 3); $query = "select * from users where id in :user_ids; $params = array("user_ids" => $user_ids); DB::query(…

【fuelphp】MySQL接続エラー[HY000/2002]と[Call to undefined function Fuel\\Core\\mysqli_init]

はじめに 今更感のある内容ですがけっこうハマったのでメモしておきます。 環境としてはAwsのEC2をWebサーバーにRdsをDBサーバーとする構成で Webサーバーにはmysql-serverをインストールしていない状況です。mysql-clientはWebサーバーにインストール済みで…

sequelproで多段sshを使って接続する方法メモ

はじめに 今回やりたかったのは以下のような環境で、sequelproを使いたかった。 で、調べると.ssh/configを使えばできそうでした・踏み台サーバー (pcからssh接続可)・webサーバー (踏み台サーバーからssh接続可)・dbサーバー (webサーバーからmysqlクライア…

【fuelphp】ローカル開発環境を作ってfuelphpセットアップ手順

久々にやったら過去のメモが見つけずらかったのでメモのまとめ vagrant導入して、LAMP環境構築してfuelphpを使えるようにするまで 1. vagrantでlinux環境構築 vagrantでローカルpcに開発環境を作る手順 2. LAMP環境構築 webサーバ設定作業メモ - 私用 webサ…

【fuelphp】クエリビルダでinsert select構文を実行する方法メモ

はじめに sqlを直接かいちゃえば、以下のような感じで簡単にかけるんですけど今回はこれをfuelphpのクエリビルダで実現してみたのでメモしておきます insert into table1 (colum1, colum2, ・・・) select colum1, colum2, ・・・ from table2 where ・・・o…

【fuelphp】クエリビルダでSQL_CALC_FOUND_ROWSを実現する方法メモ

はじめに クエリビルダを無理やり使ってみて、少し慣れてきたらすごい複雑なSQLを書かない限りそこまで困らないかなと思ってきました。ただcoreの中を覗いてみた感じだとページングなどでよく使われるSQL_CALC_FOUND_ROWSを実現する方法がなさそうで、強引に…

【MySQL】コマンドラインで最初に覚えたほうがいいと思うことまとめ

はじめに わりとphpMyAdmin等のツールを使ってる人や職場は多いのかなと思います。僕がいた職場でもそういうところけっこう多かったです。けど現場によってはそんなツールは断固として使わない!ていうことも多いと思います。そんなときはコマンドラインでの…

手動でのデータ更新ミスを防ぐ方法

はじめに サービスの運営に関わっていると、SQLなどで直接データをいじる機会が多いと思います。 最近かかわっているサイトで、作業ミスがあり復旧作業に時間をとられるということがあったので少し自分なりに考えてみました。 サービスの規模にもよるので何…

AWSでLAMP環境を構築する手順

やりたいこと awsを使ってLAMP環境の構築。 使用するサービスはEC2、S3、CloudFrontの3つ。 EC2の1インスタンス(1サーバー)にLAMPをインストール。 S3には画像等の静的コンテンツをアップロードして、CloudFrontからS3へとコンテンツを取得。 CloudFrontか…

fuelphpでmysqlのレプリケーションに対応する方法

やりたいこと 少しアクセスの多いサイトなどではありがちなmysqlのレプリケーションを使うことがあると思います。 fuelphpでそれに対応するときの作業をメモしておきます。 いちおう今回想定する環境はマスタdb1台、スレーブdb2台構成のものとします。 db定…

webサーバ設定作業メモ - 私用

はじめに webサーバを設定する作業があったのですが、いつも同じこと調べながらに作業になるので作業メモとして残しておきます。やりたいことは ・一般ユーザの作成 ・webサーバの設定(バーチャルホストの設定) ・phpのインストールと設定 ・mysqlのインスト…

mysqlでiPhone絵文字対応したときのメモ

はじめに phpからmysqlへiphoneの絵文字を含む文字列を登録しようとすると絵文字以降の文字列が登録されない。という現象が起きました。 はじめは、iphone絵文字がmysqlのutf8におさまりきらない文字コードを使ってるとのことだったので登録前に以下のような…

ソーシャルゲームを開発したときに学んだこと

はじめに けっこう前の話になるのだが、初めてソーシャルゲーム案件の開発をしたときの話です ちょうどmixiアプリがリリースされたときの話でそれまではサービスがオープンしてから時間をかけて大きくなってゆきシステム的にボトルネックとなっている箇所を…

mysqlとphpのserialize関数とでハマったときの記録

やりたかったこと 構造) mst_item 商品マスタ ・id 商品id(PK) ・data 商品データ(phpのserialize関数で変換された文字列)データ例) id,data 1,a:2:{s:4:"name";s:7:"商品1";s:11:"description";s:16:"商品1の説明";} 2,a:2:{s:4:"name";s:7:"商品2";s…

テーブル単位でのmysqldumpメモ

テーブル構造も含めてダンプする mysqldump -u ユーザー名 -pパスワード データベース名 テーブル名 データだけダンプする mysqldump -u ユーザー名 -pパスワード -t データベース名 テーブル オプションtをつける 条件を指定してデータだけダンプする mysql…