揮発性のメモ2

知識をメモ書きしておく

MySQL

MariaDBの日本語の設定

設定 MariaDB 10.5 ではこんな感じだった。 変数名 デフォルト値 備考 character_set_client utf8 ★1クライアントの文字コード character_set_connection utf8 ★1 character_set_database latin1 ☆A DBの文字コード設定ファイルの対象ではない character_set…

MySQLで、今どんなクエリが動いてるのかを見る

今、どんなクエリが動いているかは次のコマンドで確認できる mysql -u abcuser -pPASS abcdb -e "show processlist;" +----+---------+-----------+-------+---------+------+----------------+--------------------------------------------------------+ |…

MySQLで ビューの定義を見る

MySQL でテーブルを見るのと構文は一緒 -- テーブルの定義を見る show create table T_WEBUSERINF \G -- ビューの定義を見る show create view VIEW_HOGEINF \G コマンドラインからファイルに落とすときもだいたい一緒 # テーブルの定義を見る mysqldump -d …

あとからAUTO_INCREMENT属性を付ける

alter table HOGE modify FOO int not null primary key auto_increment; int と not null と primary key と auto_increment を全部いっぺんに付けるのがコツ 数値はなんか勝手に付く

ERROR 1305 (42000): FUNCTION hogedb.TO_BASE64 does not exist

Server version: 5.1.73 Source distribution mysql> select TO_BASE64("hello"); ERROR 1305 (42000): FUNCTION hogedb.TO_BASE64 does not exist TO_BASE64(str) この関数は、MySQL 5.6.1 で追加されました。 https://dev.mysql.com/doc/refman/5.6/ja/str…

*.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で、毎回パスワードを聞かれるトラブル

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