MySQL Query работает на одном сервере, а не на другом - проблемы на новом сервере

Я переношу свой сайт с одного сайта разработки на другой.

Все работает, кроме следующего SQL

(SELECT "1" AS type, `m`.`id`, `m`.`package_name`, `m`.`ending_city`, `m`.`discount_type`, `m`.`discount_amount`, (SELECT image_name FROM `package_images` WHERE package_type="1" AND package_id=m.id AND is_temp="0" ORDER BY RAND() LIMIT 1) AS package_image, (SELECT adult_price FROM `tour_package_price` WHERE package_id=m.id AND package_type="1" AND price_type="1") AS package_price, `c`.`city_name` FROM (`tour_package_master` m) JOIN `city` c ON `c`.`id`=`m`.`ending_city` LEFT JOIN (`tour_package_date_range` d) ON m.id=d.tour_package_id WHERE `d`.`tour_start_date`>=NOW() AND `m`.`active_status` = "1" GROUP BY `m`.`id`) UNION ALL (SELECT "2" AS type, `m`.`id`, `m`.`package_name`, `m`.`ending_city`, `m`.`discount_type`, `m`.`discount_amount`, (SELECT image_name FROM `package_images` WHERE package_type="2" AND package_id=m.id AND is_temp="0" ORDER BY RAND() LIMIT 1) AS package_image, (SELECT adult_price FROM `tour_package_price` WHERE package_id=m.id AND package_type="2" AND price_type="1") AS package_price, `c`.`city_name` FROM (`weekend_tour_package_master` m) JOIN `city` c ON `c`.`id`=`m`.`ending_city` WHERE `m`.`tour_start_date`>=NOW() AND `m`.`active_status` = "1" GROUP BY `m`.`id`)

Вы можете проверить работающий SQL по этому URL-адресу

http://travelindia.india-web-design.com/welcome/test_query

когда вы нажмете на, вы увидите, что sql выполняется правильно.

Но тот же запрос не работает на новом сервере. Вы можете проверить в

http://travelindia.staging-websites.com/welcome/test_query

Получает синтаксическую ошибку:

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'JOIN `city` c ON `c`.`id`=`m`.`ending_city` WHERE `m`.`tour_start_date`>=NOW() A' at line 1

Вы можете проверить, нажав на кнопку.

Пожалуйста, найдите сравнение версий сервера mysql

Текущие конфигурации сервера:

Сервер: Localhost через сокет UNIX Тип сервера: MySQL Версия сервера: 5.5.42-cll — MySQL Community Server (GPL)

Новые конфигурации сервера:

Сервер: Localhost через сокет UNIX Тип сервера: Percona Server Версия сервера: 5.5.31-30.3-log - Percona Server (GPL), выпуск rel30.3, редакция 520 Версия протокола: 10

заранее спасибо


person user2055396    schedule 13.07.2015    source источник
comment
Пожалуйста, опубликуйте соответствующий sql и сообщение об ошибке.   -  person Dan Bracuk    schedule 13.07.2015
comment
Вы уверены, что хотите опубликовать эти ссылки? Каждый может получить доступ к вашей базе данных и выполнять произвольные команды SQL.   -  person maja    schedule 13.07.2015


Ответы (2)


Я предполагаю, что MySQL поддерживает FROM (tour_package_master m), но может быть Percona Server не поддерживает, например, (FROM tour_package_master m), измените его на FROM tour_package_master m

Примечание. Удалите ( и ).

Измените следующие строки в запросе.

FROM (`tour_package_master` m)
FROM (`weekend_tour_package_master` m)

To

FROM `tour_package_master` m
FROM `weekend_tour_package_master` m
person Vicky Thakor    schedule 13.07.2015

На мой взгляд, причина может заключаться в том, что вы используете JOIN-предложения в своем запросе mysql, которые не поддерживаются некоторыми версиями персоны.

Вам придется переписать свой запрос без использования предложений JOIN.

person Coder55    schedule 13.07.2015