Объединенный Открытый Проект - Сайт для Настоящих Компьютерщиков

Объединенный Открытый Проект

Сайт для Настоящих Компьютерщиков

; Логин:
  Пароль:
Обычный
Безопасный
Запомнить пользователя



Зарегистрироваться
Забыли пароль?
 
 
 
Объединенный Открытый Проект »   Базы данных »   Ошибки при переходе с MySQL 4 на MySQL 5
RSS

Ошибки при переходе с MySQL 4 на MySQL 5

Неприятные последствия перехода и способы их решения

Текущий рейтинг темы: Нет

<<Назад  Вперед>>Модератор: wsxПечать
 
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
При переходе с MySQL 4 на MySQL 5 обнаружил очень неприятный момент: перестали работать некоторые запросы. В частности, запрос вида


$sql="SELECT u.*, lv.*, ln.*, st.*, u__pmcount AS pmcount, u__warnings AS uw_count ".

"FROM ".$GLOBALS['DBprefix']."User u, ".$GLOBALS['DBprefix']."Language ln, ".$GLOBALS['DBprefix']."StyleSet st ".

"LEFT JOIN (".$GLOBALS['DBprefix']."LastVisit lv) ON (lv.uid=u.u_id AND lv.fid=\"$forum\") ".

"WHERE $sqldata AND st.st_id=u.u_stid ";


стал давать ошибку "unknown column u.u_id".
Долго искал причину и выяснил, что в MySQL 5 поменялся приоритет запросов и теперь надо список таблиц после FROM брать в скобки, чтобы все работало нормально, т.е.

$sql="SELECT u.*, lv.*, ln.*, st.*, u__pmcount AS pmcount, u__warnings AS uw_count ".

"FROM (".$GLOBALS['DBprefix']."User u, ".$GLOBALS['DBprefix']."Language ln, ".$GLOBALS['DBprefix']."StyleSet st )".

"LEFT JOIN (".$GLOBALS['DBprefix']."LastVisit lv) ON (lv.uid=u.u_id AND lv.fid=\"$forum\") ".

"WHERE $sqldata AND st.st_id=u.u_stid ";


Лично я решил эту проблему так: перед выполнением все запросы стал обрабатывать вот так:

  if (strpos(strtoupper($query),"SELECT")!==false) {

    $query=preg_replace("/FROM([^\"\']+?)LEFT\s+?JOIN/is","FROM($1)LEFT JOIN",$query);

  }


---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
<<Назад  Вперед>>Модератор: wsxПечать
Объединенный Открытый Проект »   Базы данных »   Ошибки при переходе с MySQL 4 на MySQL 5
RSS
Быстрый переход в раздел:


Время выполнения скрипта: 0.0611. Количество выполненных запросов: 17, время выполнения запросов 0.0125