MySQLのフィールドAに格納されているデータを同一レコードのフィールドBにコピーする方法

プログラムを使用せずにMySQLのみで
フィールドAに格納されているデータを同一レコードのフィールドBにコピーするクエリをメモ。

UPDATE `テーブル名` SET フィールドB=フィールドA;


なぜ、こんな簡単なことをわざわざ書くの?
という感じなんだけど、何故かたまに聞かれるので書いておく。
参考までに。

GoogleMAPを利用して任意の地図画像を表示する方法

PCサイトだけでなく携帯でも気軽に利用できるので
会社概要の地図などで重宝するかも。


<img src="http://maps.google.com/staticmap?center=中心緯度,中心経度&markers=マーカー緯度,マーカー経度,red&zoom=縮尺&size=240x240&key=APIキー">


APIキーは下記から取得可能(※要Googleアカウント)
http://code.google.com/apis/maps/signup.html

MySQLのフィールドに格納されている文字列を一括置換する方法

プログラムを使用せずにMySQLのみで
フィールドに格納されている文字列を一括置換するクエリをメモ。


例:C0000をW0000に置換するクエリ

UPDATE `web` SET id=REPLACE (id,"C0000","W0000");


phpMyAdmin上などで実行できるので
データ整形などで使う機会はあるはず。参考までに。

svnserve(subversion)で差分をエクスポートする際のタイムアウトエラー対処方法

TortoiseSVNなどで、差分エクスポートなどを実行した際に
ファイル数が多いとよく表示されるのが下記のエラー。

svnserve/tcp server failing (looping or being flooded), service terminated for 10 min

これが出るとイラッとする。


差分バッチファイルなどを作る際に非常に不便で困っていたところ
解決方法が見つかったのでメモ。

vi /etc/inetd.conf

	svnserve stream tcp nowait.500 [ユーザー名] /usr/sbin/tcpd /usr/bin/svnserve -i -r [リポジトリ格納先]


上記のように編集。ユーザー名、パスなどは適当に書き換えてね。
重要なのは「nowait.500」の箇所。この数字がタイムアウト設定になります。
500で今のところ問題になっていないけど、1000とかにしておいてもいいかも。

エラー「PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/pdo_mysql.so'」の対処方法

バッチファイル作成の為、コマンドライン上でPHPを実行しようとすると
PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/pdo_mysql.so'
というエラーが出た。


Apacheでは正常に稼働しているのになぜだろう。
ということで、調べてみたけど、エラーの

/usr/lib/php/modules/pdo_mysql.so

は存在していた。


理由は分からないけど、とりあえずロードさせないように

vi /etc/php.d/pdo_mysql.ini

	; Enable pdo_mysql extension module
	;extension=pdo_mysql.so

とすることでエラーは出なくなった。
原因が分かり次第、追記します。

各グループの点数が一番高いデータを取得するSQL

テーブルに格納されているデータにカラムAがあり、このAをキーとして重複を省き、
それぞれA毎のカラムBの最大値でBの降順でレコードが欲しい時のSQLをメモ。
要するにカテゴリー別の最優秀者リストとかね。


DISTINCT、GROUP BY、副問い合わせあたりの組み合わせなんだろうと
目星は付けたんだけど、寝ぼけた頭では無理だった。


これを小一時間悩んで、ダメモトでtwitterに投げてみたら
@takkkunさんが教えてくれた。感謝!

SELECT A, MAX(B) FROM テーブル GROUP BY A ORDER BY B DESC


ただ、これだとAとBのフィールドしか取得できないので
取得したいカラムを並べるとよい。
※「*」と書ければ楽なんだけどね。

SELECT A, MAX(B), C, D, E, F, G FROM テーブル GROUP BY A ORDER BY B DESC


twitterは素晴らしい。
同じように悩んでいる人がこれを見て解決してね!

PHPからMySQLを利用する際の文字コード設定について

LAMPLinux+Apache+MySQL+PHP)開発を行う上で、一度は躓くのが文字コード
ほんと毎度毎度、悩ませてくれる。

忘れっぽいので、よく使う設定&コードをメモ。
ここでは、[Shift-JIS]の例で紹介。

PHPからMySQLに接続する際に文字コードを指定

文字コードセットのクエリを投げる

mysql_query("set names sjis");

PHP関数を利用して文字コードを設定

mysql_set_charset('sjis');

※但し、php5.2.3、MySQL5.0.7以降のみ利用可能

MySQL側で文字コードを指定

vi /etc/my.cnf

	[mysql]
	default-character-set = sjis
	[mysqld]
	default-character-set = sjis
	skip-character-set-client-handshake


これである程度の文字コード指定には対応できると思います。
「skip-character-set-client-handshake」には感動させられた。
見つけたとき、スッとした。