MySQL: "Столбец column_name", где предложение неоднозначно

Я присоединяюсь 2 таблицы

например

TABLE_A
+ --------- + ----------- + ----------- +
| user_id | ticket_id | имя_пользователя |
+ --------- + ----------- + ----------- +

TABLE_B
+ ----------- + ------------- +
| ticket_id | тикет имя |
+ ----------- + ------------- +

Если я запускаю следующий запрос:

ВЫБРАТЬ
  table_A.user_id, table_A.user_name, table_B.ticket_name
ИЗ таблицы_А
LEFT JOIN table_B ON table_B.ticket_id = table_A.ticket_id
ГДЕ ticket_id = '1';

На живом сервере мы получаем ошибку: " Column 'ticket_id' in where clause is ambiguous "
На тестовом сервере запрос принят.

Я знаю, как решить ошибку, это не проблема.

Однако я был бы очень рад, если бы наш тестовый сервер НЕ принял этот запрос и (как и рабочий сервер) выдал ошибку.

Кто-нибудь знает, есть ли какая-то настройка, которая заставит тестовый сервер выдавать ошибку, как живой сервер?

PS
Версия MySQL на тестовом сервере: 5.0.32-Debian_7etch5-log
Версия MySQL на Живом сервере: 5.0.41-community-log

3 ответа

Решение

Есть аналогичные проблемы с MS SQLServer, где версия 2000 принимает некоторые неоднозначные запросы, а 2005-й выдавал ошибку. В основном новые версии кажутся более строгими.

Как правило, вы должны использовать одну и ту же версию БД как на тестовом сервере, так и на производственном сервере, чтобы избежать такого поведения, когда фрагмент кода работает на тестовом компьютере и дает сбой в работе.

В каком режиме SQL работают ваши два сервера? Я мог бы представить, что одно настроено быть более строгим, чем другое.

Я думаю, что Томалак прав: в административных настройках MySQL существует строгий режим, который может решить вашу проблему.

Напоминаю, что вы выбираете его во время создания БД, но вы можете настроить его в интерфейсе администратора.

В MySQL сейчас есть несколько существенных ошибок, вы можете рассмотреть возможность перехода на SQL Server Express, если можете...

У Sun финансовые проблемы, и я не уверен, как MySQL окажется в итоге.

Другие вопросы по тегам