MySQL Query在一台服务器上运行而不在另一台服务器上运行 - 新服务器出现问题

时间:2015-07-13 11:08:48

标签: mysql sql percona

我将我的网站从一个开发站点转移到另一个开发站点。

除了以下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

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服务器版本的比较

当前服务器配置:

服务器:通过UNIX套接字的Localhost 服务器类型:MySQL 服务器版本:5.5.42-cll - MySQL社区服务器(GPL)

新服务器配置:

服务器:通过UNIX套接字的Localhost 服务器类型:Percona Server 服务器版本:5.5.31-30.3-log - Percona Server(GPL),版本rel30.3,修订版520 协议版本:10

提前致谢

2 个答案:

答案 0 :(得分:1)

我猜 MySQL 支持FROM (tour_package_master m)但可能 Percona服务器不支持(FROM tour_package_master m)将其更改为{{1} }

注意:移除FROM tour_package_master m(

更改查询中的以下行。

)

答案 1 :(得分:0)

在我看来,原因可能是您使用了JOIN - 条款 mysql查询某些版本的角色不支持。

您必须在不使用JOIN子句的情况下重写查询。