MySQL 查询在一台服务器上工作而不在其他服务器上工作 - 新服务器中的问题
MySQL Query working on one server and not on other - Problems in new server
我正在将我的站点从一个开发站点转移到另一个开发站点。
除以下各项外一切正常 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`)
你可以在这个url
查看运行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 套接字的本地主机
服务器类型:MySQL
服务器版本:5.5.42-cll - MySQL 社区服务器 (GPL)
新服务器配置:
服务器:通过 UNIX 套接字的本地主机
服务器类型:Percona 服务器
服务器版本:5.5.31-30.3-log - Percona Server (GPL),版本 rel30.3,修订版 520
协议版本:10
提前致谢
在我看来,原因可能是您在
mysql-一些persona版本不支持的query。
您将不得不在不使用 JOIN 子句的情况下重写您的查询。
我猜 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
我正在将我的站点从一个开发站点转移到另一个开发站点。
除以下各项外一切正常 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`)
你可以在这个url
查看运行SQLhttp://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 套接字的本地主机 服务器类型:MySQL 服务器版本:5.5.42-cll - MySQL 社区服务器 (GPL)
新服务器配置:
服务器:通过 UNIX 套接字的本地主机 服务器类型:Percona 服务器 服务器版本:5.5.31-30.3-log - Percona Server (GPL),版本 rel30.3,修订版 520 协议版本:10
提前致谢
在我看来,原因可能是您在 mysql-一些persona版本不支持的query。
您将不得不在不使用 JOIN 子句的情况下重写您的查询。
我猜 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