揮発性のメモ2

http://d.hatena.ne.jp/iww/

MySQL

*.sql

そのディレクトリにあるSQLを全部読む @echo off for %%A in (*.sql) do ( echo %%A c:\xampp\mysql\bin\mysql -uUSER -pPASS DBNAME < %%A )

DOSでmysqlのログをローテートする

スロークエリとかエラーのログをローテートする mysql_slow_20180802.log みたいにリネームする set NOWDATE=%DATE:/=% rename mysql_error.log mysql_error_%NOWDATE%.log rename mysql_slow.log mysql_slow_%NOWDATE%.log mysqladmin.exe -uroot flush-log…

テーブルごとにダンプする

xargsで個別のファイルにリダイレクトしたい - 揮発性のメモ テーブル一覧でぐるぐる回って、10個くらい並列処理しながらダンプして圧縮する time mysql -u$USER -p$PASS $DBNAME -Nse "show tables" | xargs -P10 -iXXX sh -c "echo XXX; mysqldump -u$USER…

set uname utf8; とやってもまだ文字化けするとき

set names utf8; とか打つ必要がそもそもなくて、それよりも 環境変数LANGがen_US.UTF8だったりすることがあるので ちゃんとja_JP.UTF8を設定する

先週の日付を取得する

MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.7 日付および時間関数 SELECT DATE_SUB(NOW(), INTERVAL 7 DAY); -- 2016-05-17 21:11:47 SELECT SUBDATE(NOW(), 7); -- 2016-05-17 21:11:47 SELECT DATE_FORMAT(SUBDATE(NOW(), 7), "%Y%m%d%H%i%s"); -- …

トリガー一覧表示

トリガー名、イベント、対象テーブル の一覧を表示する mysql -uUSERID -pPASSWD DBNAME -e "SHOW TRIGGERS;" -N | cut -f1,2,3 全てのトリガーを一括で保存する mysqldump -ntd -uUSERID -pPASSWD DBNAME --tab=/tmp/triggers find /tmp/triggers -size 0 -…

MySQLでcsvファイルをインポートする

mysqlimportコマンドでインポートする MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.5.5 mysqlimport — データインポートプログラム $ mysqlimport -uhogehoge -pPASSWORD hogeDB --delete --fields-terminated-by=',' --fields-optionally-enclosed-by=…

トリガーを登録するsql文の書き方

DROP TRIGGER IF EXISTS triger_hoge01; delimiter $$ CREATE TRIGGER triger_hoge01 AFTER UPDATE ON t_hoge FOR EACH ROW BEGIN /* 更新されたらログに追加する */ INSERT t_hogelog set data=NEW.data; END $$ delimiter ; $ mysql PiyoPiyo < trigger.sq…

MySQLのログをローテートする

[mysqld_safe] log-error=/var/log/mysqld.log これをローテートさせるには /etc/logrotate.d/mysqld を編集する サンプルがコメントアウトされているので、有効化する /var/log/mysqld.log { create 640 mysql mysql notifempty daily rotate 3 missingok c…

Subquery returns more than 1 row

select * from T_HOGE where CARDID = (select CARDID from T_FUGA where FLG<>"0") [21000][1242] Subquery returns more than 1 row副問い合わせでよくあるエラー https://dev.mysql.com/doc/refman/5.0/en/subquery-errors.html select * from T_HOGE whe…

PDOで、INの代わりにfind_in_set関数を使う

prepare($sql); for($i=0;count($list);$i++) $sth->bindValue($i+1, $list[$i]; 普通に書くとだいたいこう。 だけど、クエリーは動的に作りたくない。

トリガーの一覧を出力する

トリガに関する情報の取得(SHOW TRIGGERS文) - トリガの作成 - MySQLの使い方 SHOW TRIGGERS; トリガの中身が大きいと めちゃくちゃ読みにくい出力になるので、 \G にして縦表示した方が良い。

ERMaster のインストール

MySQL上のDBのスキーマをEclipseから見る JDBCのインストール MySQL :: MySQL Community Downloads http://dev.mysql.com/downloads/connector/j/ ここから、JDBCのインストーラ(.msi)をダウンロードし、インストール実施 次のフォルダに mysql-connector-ja…

joinするときは照合順序に気を付ける

照合順序が違うものどうしをjoinすると、インデックスとか全く効かなくなる ことがある。 utf8_bin と ujis_bin だと中身が英数字のみであってもアウト。 最低限、joinするカラム同士の照合順序は合わせておくのが肝要。 MariaDB [tanuki]> explain select c…

mysqlでinsertできない

Array ( [0] => HY000 [1] => 1449 [2] => The user specified as a definer ('hoge'@'localhost') does not exist )insert時にトリガー動かすようになってた。 そのトリガーの実行権限が、ログインユーザと食い違ってるとこのエラーが出て動かない。 トリガ…

テーブル一覧を行数順にソートする

テーブルの一覧を出すコマンドは show table status mysql -uhoge -phoge tastdb -e "show table status" 1列目がテーブル名、5列目が行数なので、カットしてソートすればOK mysql -uhoge -phoge tastdb -Ns -e "show table status" |cut -f 1,5 |sort -n -k…

適当にひとつ表示

適当にひとつ表示 SELECT * FROM testtable ORDER BY RAND() LIMIT 1; ORDER BY RAND() でランダムにソートできる グループごとに適当にひとつずつ表示 SELECT * FROM testtable GROUP BY a ORDER BY RAND(); これだと、aの中でひとつ選択してからランダムに…

mysqldumpでいっしょにプロシージャも出力する

MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.5.4 mysqldump — データベースバックアッププログラム データとスキーマと一緒に関数とプロシージャも出力したいときは -R を使う mysqldump -R -uuser -ppass dbname > /tmp/hoge.sql http://ne.tc/2007/11…

カウンターテーブルを使って 変数ごとに採番する

ロックしてインクリメントして値取得してアンロック、とかやらなくてもいい方法 mysql> select * from TEST_SEQ; +-----+-----+ | IND | VAL | +-----+-----+ | A | 3 | | B | 99 | | C | 4 | +-----+-----+ たとえば、Bという変数をインクリメントしてから…

mysqli 拡張がありません。

mysqli 拡張がありません。php-mysqlをインストールしてapacheとmysql再起動

Call to undefined function mb_detect_encoding

PHP Fatal error: Call to undefined function mb_detect_encoding()php-mbstringをインストールしてapache再起動

MySQLでテーブルが圧縮済みかチェックして一覧表示

http://dev.mysql.com/doc/refman/5.1/ja/table-info.html $ myisamchk -d HOGE.MYI MyISAM file: HOGE.MYI Record format: Compressed Character set: latin1_swedish_ci (8) Data records: 55571 Deleted blocks: 0 Recordlength: 455 という形式で出力さ…

データベース削除

データベース作成 CREATE DATABASE test; GRANT ALL PRIVILEGES ON test.* TO user IDENTIFIED BY 'pass'; GRANT ALL PRIVILEGES ON test.* TO user@localhost IDENTIFIED BY 'pass'; FLUSH PRIVILEGES; データベース削除 DROP DATABASE test; REVOKE ALL PR…

日付フォーマット出力

2012-10-03 16:33:58 みたいに出力する perl my ($S,$M,$H,$d,$m,$Y,$x) = localtime(); my $date = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $Y+1900,$m+1,$d,$H,$M,$S ); print "$date\n"; use POSIX qw(strftime); $date = strftime( "%Y-%m-%d %H:%M:…

phpmyadminで、毎回パスワードを聞かれるトラブル

ブラウザを起動するたびに、ではなく、なにか操作をするたびにパスワードの入力を求められる。

phpmyadminの代替

phpmyadminが良く分からないエラーを出すので代替を探す タイトル 配布元 概要 備考 SQL Buddy http://www.sqlbuddy.com/ ajaxを使ったUI うまくログインできない phpminiadmin http://phpminiadmin.sourceforge.net/ ファイル1個 使い勝手はいまいち phpmin…

コマンドラインからタブ区切りで出力

普通に出力すると、罫線で囲まれて出力される $ mysql -Ne 'SELECT * FROM hoge' +------+---------------+-----------+ | 1 | 10.10.10.1 | CB0000002 | | 2 | 10.11.10.100 | C80000002 | | 3 | 10.10.10.3 | CF0000001 | +------+---------------+-------…

REPLACE INTO の挙動

REPLACE INTO は基本的に削除して追加する。 UPDATEではないので、書いていない項目は全て初期値になる。 しかし、ユニークキーが2つ以上あるときはおかしな挙動になる。 主キーは大体AUTO_INCREMENTなので、その前提で検証する。 id ukey data1 data2 1 A a…

ディスク使用量ランキング

インデックスでもデータそのものでもとにかくサイズが大きいのを並べてみる。 $ ls -lhSr *.{MYD|MYI} | tail -n 20

複数カラムでユニークキーを作る

複数カラムでユニークキーを作りたいとき、重複があるとエラーになる mysql> ALTER TABLE hoge ADD UNIQUE (a,b,c); ERROR 1062 (23000): Duplicate entry 'aiueokakikukekoaaaaa' for key 2 IGNOREをつけると、重複したカラムは最初の分だけ採用されて正常…