Windows版のMySQLは、デフォルトでテーブル名等が強制的に小文字にされてしまう。たとえば「TABLE」としたいのに、「table」になってしまうなど。
これを回避するには、my.iniの[mysqld]の項に
lower_case_table_names=0
を入れてやるだけ。MySQL再起動すれば解決です。
この値のデフォルトは、Windows では 1 で、Unix では 0 です。
2005年12月24日土曜日
2005年12月23日金曜日
MRTGを入れた
自宅サーバーに、MRTGを入れてみました。
「mrtg linux インストール」でググってみたら、なんだか面倒そう。しかしここ最近サーバーの調子が悪かったので頑張って入れてみることにした。
http://vine.1-max.net/net-snmp+MRTG.html
このサイトを参考に(というかほぼそのまんま)、インストールを進めたところ、特に何もひっかからずすんなりインストールできました。案ずるより産むがやすし。
今回は、apt-getが大活躍。net-snmp、zlib-devel、libpng-devel、gd-develなどをapt-getでインストールしましたが、とっても楽ちんでした。
「mrtg linux インストール」でググってみたら、なんだか面倒そう。しかしここ最近サーバーの調子が悪かったので頑張って入れてみることにした。
http://vine.1-max.net/net-snmp+MRTG.html
このサイトを参考に(というかほぼそのまんま)、インストールを進めたところ、特に何もひっかからずすんなりインストールできました。案ずるより産むがやすし。
今回は、apt-getが大活躍。net-snmp、zlib-devel、libpng-devel、gd-develなどをapt-getでインストールしましたが、とっても楽ちんでした。
MySQL : Error #1364 : Field '%s' doesn't have a default value
ローカルで開発しようと思い、Windowsにapache、php、mysql5.0を入れた。で、アプリを動かしてみたら、エラーが出る。調べてみたらSQLエラーらしい。
Error #1364 : Field '%s' doesn't have a default value
というエラーメッセージが。
insert into TABLE (aaa, bbb) values ('AAA', '');
という具合に、''で空白を挿入しようとするのがダメらしい。普段Linux上でMySQLを使ってるときはこんなエラー出たこと無いのに。。。
ググってみても、それらしきソースは見つからない。そこでmy.iniを見てみると、なんだか見慣れないオプションが設定されている。
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
http://www.limy.org/program/db/mysql/mysql_option.html
↑このサイトによると、「他ベンダーのデータベースやバージョンの違うMySQLとの互換性の為に使用します。詳細は不明です。」とのこと。
とりあえずコメントアウトしてMySQL再起動してみたら、見事解決。。。
一体なんだったんだろう。よくわからないが、とりあえず良かった。
Error #1364 : Field '%s' doesn't have a default value
というエラーメッセージが。
insert into TABLE (aaa, bbb) values ('AAA', '');
という具合に、''で空白を挿入しようとするのがダメらしい。普段Linux上でMySQLを使ってるときはこんなエラー出たこと無いのに。。。
ググってみても、それらしきソースは見つからない。そこでmy.iniを見てみると、なんだか見慣れないオプションが設定されている。
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
http://www.limy.org/program/db/mysql/mysql_option.html
↑このサイトによると、「他ベンダーのデータベースやバージョンの違うMySQLとの互換性の為に使用します。詳細は不明です。」とのこと。
とりあえずコメントアウトしてMySQL再起動してみたら、見事解決。。。
一体なんだったんだろう。よくわからないが、とりあえず良かった。
phpからMySQLへ接続するとき「Client does not support authentication protocol requested by server」というエラーが出る
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL clientこんな感じのエラーが出た場合は、
SET PASSWORD FOR root@localhost = OLD_PASSWORD('password_str');で解決。
パスワード暗号化の互換性で起きる問題らしい。
2005年12月22日木曜日
phpのfsockopen関数でhttpsのサイトへ接続する
fsockopen関数でhttpsのサイトへ接続する場合、phpを --with-openssl のオプションをつけてコンパイルする必要がある。そうすると、phpinfo の Registered PHP Streams の項目に「https」が出てくる。
それをやらずにfsockopenでhttpsサイトにつなごうとすると、「no SSL support in this build」というエラーが出てしまう。
。。。
ウェブでいろいろ調べた結果、このことはわかったのだが、どーーーしてもうまくいかない。何度コンパイルしてもダメ。
なので、
・apacheを止める
・make distcleanする
・再コンパイル
・make&make install
これをやったらうまくいった。結局、半日くらい無駄にしてしまった。。。
phpを再コンパイルする場合は、必ずapacheは止める。更に、それでもダメな場合はいったんmake distcleanしてやる。
phpの再コンパイルで詰まったら、このことを思い出すようにしよう。。。
それをやらずにfsockopenでhttpsサイトにつなごうとすると、「no SSL support in this build」というエラーが出てしまう。
。。。
ウェブでいろいろ調べた結果、このことはわかったのだが、どーーーしてもうまくいかない。何度コンパイルしてもダメ。
なので、
・apacheを止める
・make distcleanする
・再コンパイル
・make&make install
これをやったらうまくいった。結局、半日くらい無駄にしてしまった。。。
phpを再コンパイルする場合は、必ずapacheは止める。更に、それでもダメな場合はいったんmake distcleanしてやる。
phpの再コンパイルで詰まったら、このことを思い出すようにしよう。。。
mysqldumpで文字コード(charset)を指定
mysqldump HOGE_DB --set-charset=ujis > HOGE.sql
という感じで、--set-charset=*** と指定してあげるだけ。
という感じで、--set-charset=*** と指定してあげるだけ。
2005年12月21日水曜日
MySQL関数CASTで型変換する
select cast('-0008000' as signed);
で
-8000
と言う具合に変換できる。
asの後ろにつけられる引数は、以下の通り。
BINARY
CHAR
DATE
DATETIME
SIGNED (INTEGER)
TIME
UNSIGNED (INTEGER)
http://dev.mysql.com/doc/refman/4.1/ja/cast-functions.html
で
-8000
と言う具合に変換できる。
asの後ろにつけられる引数は、以下の通り。
BINARY
CHAR
DATE
DATETIME
SIGNED (INTEGER)
TIME
UNSIGNED (INTEGER)
http://dev.mysql.com/doc/refman/4.1/ja/cast-functions.html
登録:
投稿 (Atom)