MySQL: «Столбец column_name», где предложение неоднозначно - PullRequest
3 голосов
/ 03 декабря 2008

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

например

table_A
+---------+-----------+-----------+
| user_id | ticket_id | user_name |
+---------+-----------+-----------+

table_B
+-----------+-------------+
| ticket_id | ticket_name |
+-----------+-------------+

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

SELECT
  table_A.user_id
, table_A.user_name
, table_B.ticket_name
FROM table_A
LEFT JOIN table_B ON table_B.ticket_id = table_A.ticket_id
WHERE ticket_id = '1';

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

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

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

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

приписка
Версия MySQL на Тестовый сервер : 5.0.32-Debian_7etch5-log
Версия MySQL на Живом сервере : 5.0.41-community-log

Ответы [ 3 ]

5 голосов
/ 03 декабря 2008

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

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

2 голосов
/ 03 декабря 2008

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

0 голосов
/ 03 декабря 2008

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

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

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

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

...