2015-07-13 36 views
0

我正在将我的站点从一个开发站点转移到另一个站点。MySQL查询在一台服务器上工作,而不是在其他服务器上 - 新服务器中的问题

一切工作,除了下面的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的 Server版本:42年5月5日-CLL - MySQL社区服务器( GPL)

新的服务器配置:

服务器:通过本地主机UNIX插座 服务器类型:Percona的服务器 Server版本:5.5.31-30.3日志 - Percona的服务器(GPL)发布rel30.3,修订520 协议版本:提前

+1

请发布有问题的sql和错误消息。 –

+0

您确定要公开这些链接吗?每个人都可以访问数据库并执行任意的SQL命令。 – maja

回答

1

我猜MySQL的支持FROM (tour_package_master m)但可能的Percona服务器(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 
0

在我看来10个

感谢的原因可能是你在您的 mysql-query中使用JOIN -clauses,某些版本的角色不支持。

您将不得不重写您的查询而不使用JOIN子句。

相关问题