我有一个 CRON 作业,它执行一个 SELECT 语句来获取记录。当 SELECT 在我的开发机器上运行时,它会生成以下语句:
SELECT `users`.* FROM `users` WHERE `users`.`id` = 87 LIMIT 1
这是成功的。
当 SELECT 在我的生产(托管)机器上运行时,它会生成带有双引号的语句:
SELECT "users".* FROM "users" WHERE "users”.”id” = 87 LIMIT 1
这不成功,我收到 MySQL 1064 错误,
#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 '.* FROM "users" WHERE "users
两台机器上的代码相同,但我的开发 MySQL 版本是 5.5.33,而生产版本是 5.1.67(我无法控制它来设置/更新它)
有没有办法强制单引号或其他首选方法来处理这种情况?
感谢您的时间和帮助。
- 编辑 -
以下是通过我的 CRON 作业调用的主要代码片段:
/lib/tasks/reports.rake
namespace :report do
desc "Send Daily Report"
task :daily => :environment do
User.where(:report_daily => 1).find_each do |user|
ReportsMailer.send_report(user, 'daily').deliver
end
end
/app/mailers/reports_mailer.rb
def send_report(user, date_increment)
@user = user
@date_increment = date_increment
get_times(user)
mail :to => user.email, :subject=> "Report: #{@dates}"
end
--EDIT2--
所以看起来我需要使用倾斜的单引号(`)才能使它成功工作。如何强制我的应用程序或 MySQL 使用这些而不是双 (") 引号?