揮発性のメモ2

最近知った知識を さも昔から知ってた風にメモ書きしていく

MySQL

MariaDBで、ネットワーク接続ができない

ランキング参加中プログラミングランキング参加中Linuxユーザーを追加してパスワードも設定しているのにネットワーク接続がエラーになる。 [hoge@unko ~]$ mysql -uviewer -ppass -h192.168.1.2 testdb ERROR 1045 (28000): Access denied for user 'viewer'…

MySQLで、データベースをダンプする

ランキング参加中Linuxランキング参加中プログラミング ダンプ 普通のダンプ。 ストアドプロシージャもトリガーもビューも無いとき mysqldump -uUSER -pPASS DBNAME --single-transaction | gzip > DB.sql.gz トリガー以外をダンプ。データは出力する。 BLOB…

MySQLで、スロークエリログを出力する

/etc/my.cnf.d/slow.cnf とかを作る [mysqld] slow_query_log = 1 # スロークエリログ有効化 slow_query_log_file = slow.log # ログファイル名 long_query_time = 10 # 閾値(秒) ディレクトリを指定しないと、/var/lib/mysql/ に出力されるランキング参加中…

mysqlコマンドで、TSVをインポートする

ランキング参加中プログラミング mysql -uunko -ppanko hogehoge --local-infile=1 -e "LOAD DATA LOCAL INFILE 'piyopiyo.tsv' IGNORE INTO TABLE piyopiyo" --local-infile=1 は ローカルファイルの使用を許可するおまじない LOAD DATA LOCAL INFILE 'piyo…

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再起動