テキストファイルのSQLを実行

2006/10/03 | MySQL

MySQLの備忘録。ファイルに保存されたSQL文を実行するためのコマンド。
シェルから実行する場合は以下のコマンドを実行。
# mysql database < text_file

mysqlを実行中の場合は以下のコマンドを実行。
> source filename;

MySQLで日付の計算

2006/05/29 | MySQL

MySQLで日付の計算をする場合の書式(何度やっても忘れてしまう・・・)。

date_add(‘2006-1-1 00:00:00′,INTERVAL 10 DAY)

日付のフォーマット

2006/04/13 | MySQL

毎回「to_char」関数を使おうとしてエラーが出る(MySQLではそんな関数ありません)ので、メモしておく。

SELECT date_format(column0,’%Y-%m-%d’) FROM table0;

発行した全てのクエリのログをとる

2006/04/06 | MySQL

MySQLで発行した全てのクエリをログにとる方法は、MySQL起動時に「–log」オプションをつけることだけ。RedHat系だと起動スクリプト「/etc/rc.d/init.d/mysqld」に記述する。ただし記述する位置に注意がいるみたいで、場所を間違うと起動しなくなってしまう。具体的にはこういう感じになっている。

/usr/bin/mysqld_safe –defaults-file=/etc/my.cnf –pid-file=”$mypidfile” >/dev/null 2>&1 &

上記の行に–logオプションをつければよいのだが、以下のように

/usr/bin/mysqld_safe –log –defaults-file=/

一番先頭につけると起動しない。二つ目以降に書くといいみたい。

/usr/bin/mysqld_safe –defaults-file=/etc/my.cnf –log –pid-file=”$mypidfile” >/dev/null 2>&1 &

これで/var/lib/mysql/以下に[ホスト名].logというファイルができ、そこに実行された全てのクエリが記録される。

phpMyAdminの文字化け

2006/04/06 | MySQL

自作PHPスクリプトとMySQLとのデータのやり取りで文字化けする件は、phpスクリプトのデータベース接続時に「SET NAMES」コマンドで回避できることがわかった。
自作スクリプトはこれで動いたけれど、とある環境でphpMyAdminで文字化けが発生することがわかった。不思議なことに「phpの設定」「MySQLの設定」が同じであるにもかかわらず、である。
いろいろ調べてみた。どうやらLinuxインストール時の環境にも依存するよう?だ。調べてみたところはここ。

/etc/sysconfig/i18n

このファイルで言語の設定が一行目に書いてあるのだが・・・。うまく動作しているほうはこのように記述があった。
LANG=”en_US.UTF-8″
対して動かないほうはというと・・・。

LANG=”ja_JP.eucJP”

つまり基本言語が「UTF8」か「EUC」かという違い(よくはわからないけど「Localeの違い」ってやつ?)。phpの設定としては基本的にEUCしか使用しないのでどちらも以下のように設定している。

mbstring.http_output EUC-JP
mbstring.http_input Auto
mbstring.encoding_translation Off
「モノは試し」ということでphpmyadminのあるディレクトリに以下の記述をしたhtaccessファイルを設置した。

php_value mbstring.http_output utf8

あら不思議。これでphpMyAdminからもちゃんと日本語が通るようになりました。ひょっとしたらhttp_outputの記述を変更せずにencoding_translationの値を変更することでもうまくいくかもしれない。
phpMyAdminはサーバの言語設定も見ているのかもしれない・・・。今度暇があればソースをじっくり眺めてみる必要がありそうだな。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net