Category / MySQL
【MySQL】#1271 – Illegal mix of collations for operation ‘concat’
2017-12-13 問題 MySQLで以下のようなSQLを実行したら、エラーになりました。 SELECT CONCAT(first_name, if(first_name, ' ',''), last_name) from staff; # […]
【MySQL】SQLがなぜか遅いときの原因のひとつ
2017-04-02 問題 あるSELECT文の実行が異様に遅いです。 インデックスは作成してあるので効くはずなのに、インデックスが使用されている様子もないです。 なぜ? 答え SQL自体には問題はないはずなのに、なぜかインデックスが効かない […]
【MySQL】小数
2017-03-22 問題 MySQLで小数の計算すると端数が変になります? 答え ▼ テーブル カラム名 型 id int test_double double test_float float test_decimal decimal(1 […]
MySQLのバイナリログを自動的に圧縮して退避する
2017-03-20 問題 MySQLのバイナリログがそこそこの容量になるので、圧縮して退避したい。 ただ、ログ調査などのために一定期間は消さずに残したい。 できますか。 答え バイナリログは、/var/lib/mysql などのMySQLの […]
【MySQL】空き容量に余裕のないサーバーでダンプ・リストアするとき
2016-11-15 問題 空き容量に余裕がない状況で、MySQLのダンプ・リストアをするには? 答え ダンプをとるときは、そのままファイルに書き出さないで、gzipで圧縮して保存する。 mysqldump -u 【ユーザー名】-p【パスワー […]
【MySQL】 Row size too large のエラーの対応
2016-11-09 問題 MySQLのデータベースに たくさんのTEXT型カラムを持ったテーブルを作り、 いざデータを登録しようとしたところ、エラーが出ました。 Row size too large 答え 設定で innodb_file_f […]
【MySQL】昇順にソートしたいけどNULL行は後ろにもってきたい
2016-01-17 問題 SQLで、結果をソートするときに、NULLの行は後ろにもっていくとか、できますか? 答え 一応できる。 select * from T order by ソートしたい列 is null, ソートしたい列; ソートし […]
【MySQL】月初、月末の計算方法
2015-12-19 問題 MySQLでの日付計算で、月初や月末を出すのはどうやったらよいですか。 答え CURDATE() は、日付型カラムなどに置き換えてお使いください。 -- 当月月初 SELECT DATE_FORMAT(CURDAT […]
【MySQL】手軽な高速化手段
2015-11-21 問題 忙しそうなMySQLを高速化したい。 答え もし現在の設定が以下のようであれば mysql< show variables like 'innodb_flush_log_at_trx_commit'; +-- […]
【MySQL】insert ~ select ~ でロックのかかる例
2015-11-16 問題 あるテーブルのデータを delete しようとしているのですが、ロック待ちのタイムアウトになります。 ERROR 1205 (HY000): Lock wait timeout exceeded; try rest […]
【MySQL】SQLで年度末時点の年齢を計算する
2015-11-12 問題 とあるシステムで年度末時点(3月末時点)の年齢を出さないといけなくなったのですが、SQLでできますか。 答え TIMESTAMPDIFF が、ExcelでいうDATEDIFの満年数計算と同じことをしてくれる。 me […]
【MySQL】SQLで年度末を計算する
2015-11-11 問題 SQLで、年度末ってどうやって計算すればよいですか?(4月区切りの) 4月以前だったら~、4月以降だったら~みたいな条件分岐が必要? 答え 4月以前、以降で場合分けをするのは、素直なアイデアで間違ってはいない。 書 […]
【MySQL】 UTF-8の半角スペース(C2A0)を含むデータを抽出する
2015-11-05 問題 SQLで、あるカラムにタブや変な文字が入っていないか確認したい。 答え MySQLでは、0xHHHH….形式で文字列を16進表現できるので、以下のようなSQLで書ける。 ・タブを含む SELECT * […]
【MySQL】 INSERT後すぐに別プロセスでSELECTするとデータが取得できない?
2015-09-29 問題 MYSQL 5.1.49 、MyISAM なテーブルで、プロセスAがINSERT実行後、プロセスBがAが登録したレコードをすぐにSELECTしようとすると、取得できない現象が発生するのですが、そういうものですか。 […]
【MySQL】AUTO_INCREMENTの値を変更する(確認する)
2015-09-27 問題 MySQLのAUTO_INCREMENTのカラムの開始の値を変更したいです。 答え 以下のSQLでできる。 ALTER TABLE xxxx AUTO_INCREMENT=100; 現状の確認は以下で SELECT […]
【MySQL】データベースの名前変更(リネーム、RENAME)の方法のひとつ
2015-08-04 問題 MySQL5.1.23以降は、RENAME DATABASE が廃止されたみたいなんですけど、データベースの名前を変えるにはどうするのが良いですか。 答え RENAME TABLE は可能なので、以下のような方法が […]
MySQLのデータベース定義書を自動生成する
2015-07-10 問題 データベース定義書を自動作成できるソフトないですか? データベースはMySQLです。 答え mysqldumpはXML形式でテーブル定義を出力することができる。 mysqldump -d -u xxxx -p -- […]
【MySQL】 Error 1449 The user specified as a definer (‘username’@’hostname’) does not exist
2015-07-01 問題 MySQLのエラーコード 1449 って何? Error 1449 The user specified as a definer ('username'@'hostname') does not exist よそ […]
CentOS7でLAMP環境
2015-06-09 問題 CentOS7で、さくっとLAMP環境を作りたい。 答え (さくらのVPSのカスタムOSでCentOS7 64bitをインストールするときなど) インストール OS ・テキストモードでインストールしたいときは、イン […]
【MySQL】INSERT,UPDATE,DELETEの処理時にSQLを自動的に実行する
2015-05-15 問題 MySQLだけで、UPDATEを実行する前に、更新前のレコードをまるっと別テーブルにコピー(更新履歴として残す)したい。 答え [準備] 事前に同じ構成(*)のテーブルを二つ用意(hoge, log_hoge)。 […]