MySQL INNER JOIN - '=' vs 'like'

У нас возникли странные проблемы с внутренними соединениями 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' работает, а '=' нет?

17
задан Jonathan Leffler 22 May 2012 в 03:16
поделиться