[PHP-users 31172] mysql関数からのselect文発行について

yuji tomita tomita @ remora.jp
2006年 12月 31日 (日) 13:10:43 JST


初めて投稿させて頂きます、富田と申します。
PHP 5.1.6 + senna0.8.2 + MySQL5.0.24で開発を行っているのですが
特定のSQLをmysql関数から実行しますと、エラーが発生してしまい
Select文の結果を取得することができません。
※mysqli関数やMDB2を使用しても同じ結果でした。

-----------------------------------------------------------------------
[挙動のおかしいsql文]
SELECT * FROM indexer force index(indexer_regist) WHERE MATCH(indexer_description) AGAINST('
海') ORDER BY `indexer_regist` LIMIT 1,10;

[PHPプログラム]
if (!$con = mysql_connect("HOST名", "USER", "PASS")) {
	echo "接続失敗" ;
	exit ;
}

if (!mysql_select_db("DB名", $con)) {
	echo "データベース選択失敗" ;
	exit ;
}

$sql = "SELECT * FROM indexer force index(indexer_regist) WHERE MATCH(indexer_description) AGAINST('サッカー') LIMIT 1,10;";
if (!$res = mysql_query(mb_convert_encoding($sql, "UTF-8", "auto"))) {
	$message  = 'Invalid query: ' . mysql_errno() . "\n";
	$message .= 'Whole query: ' . $sql;
	die($message);
}

while ($row = mysql_fetch_array($res)) {
	print_r($row);
	echo "<BR>" ;
} 

mysql_free_result ($res) ;
mysql_close($con) ;


[MySQLエラー内容]
mysqld got signal 11;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.

key_buffer_size=402653184
read_buffer_size=2093056
max_used_connections=3
max_connections=100
threads_connected=2
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = 802415 K
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

[PHPがMySQLより受け取るエラー内容]
Invalid query: Can't find FULLTEXT index matching the column list 

[挙動詳細]
1.PHPからmysql関数およびmysqli関数を使用して該当SQLを発行すると、前述の
エラー発生。
2.Perl/CGIからDBIを通して該当SQLを発行すると、前述のエラー発生。
3.コマンドラインからmysqlにログインして実行した場合、正常動作。
4.phpMyAdminで該当SQLを発行した場合、正常動作。

[ハード・OS]
Athlon64x2 + CentOS4.4

[特記事項]
「force index(indexer_regist)」を外すと挙動詳細の1,2でも動作する。
CeleronD + CentOS4.4では問題なく動作した。
-----------------------------------------------------------------------

はじめはsennaの不具合かと思いましたが、同じDBを使用しているphpMyAdminから
上記のSQLを発行した場合は正常動作いたします。また、MySQLのコマンドライン
からも正常動作しております。

phpMyAdminで動いているということは、何らかの解決策がありそうなのですが・
・。

ほんの小さなことでも、気づかれたことございましたらアドバイス
頂けますと幸いです。どうぞ、よろしくお願いいたします。


PHP-users メーリングリストの案内