MySQLの内部結合でいくつかの奇妙な問題が発生しています。基本的に、「=」演算子を使用すると奇妙なエラーが発生しますが、代わりに「like」を使用すると機能します。残念ながら、これはActiveRecordを介したものであり、代わりに「いいね」を叩く簡単な方法はありません。さらに、ここで実際に何が起こっているのかを理解したいと思います。
失敗するクエリは次のとおりです。
mysql> SELECT COUNT(*) FROM `versions` INNER JOIN `site_versions`
ON `versions`.id = `site_versions`.version_id;
エラーは次のとおりです。
ERROR 1296 (HY000): Got error 20008 'Query aborted due to out of query memory'
from NDBCLUSTER
動作するクエリは次のとおりです。
mysql> SELECT COUNT(*) FROM `versions` INNER JOIN `site_versions`
ON `versions`.id like `site_versions`.version_id;
テーブル自体の詳細は次のとおりです。
mysql> desc site_versions;
+----------------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| version_id | int(11) | YES | MUL | NULL | |
[..snip..]
+----------------------+----------+------+-----+---------+----------------+
mysql> desc versions;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
[..snip..]
+------------+--------------+------+-----+---------+----------------+
「like」が機能し、「=」が機能しない理由はありますか?