我刚刚在Windows 10上安装了Bash,安装了libmysqlclient-dev包,并运行了一个rake任务,该任务执行下面的查询,使用ActiveRecord::Base.connection.execute在mysql数据库上创建一个视图。
DROP TABLE IF EXISTS debtors_customer_balances;
CREATE OR REPLACE VIEW debtors_customer_balances AS
SELECT
customer_id,
SUM(amount_cents) AS total_cents,
SUM(CASE
WHEN due_on >= CURDATE()
THEN amount_cents
ELSE 0
END) AS current_cents,
SUM(CASE
WHEN due_on >= (CURDATE() - INTERVAL 7 DAY)
AND due_on < CURDATE()
THEN amount_cents
ELSE 0
END) AS overdue7_cents,
SUM(CASE
WHEN due_on >= (CURDATE() - INTERVAL 14 DAY)
AND due_on < (CURDATE() - INTERVAL 7 DAY)
THEN amount_cents
ELSE 0
END) AS overdue14_cents,
SUM(CASE
WHEN due_on >= (CURDATE() - INTERVAL 30 DAY)
AND due_on < (CURDATE() - INTERVAL 14 DAY)
THEN amount_cents
ELSE 0
END) AS overdue30_cents,
SUM(CASE
WHEN due_on < (CURDATE() - INTERVAL 30 DAY)
THEN amount_cents
ELSE 0
END) AS overdue30_plus_cents
FROM
debtors_balances
GROUP BY
customer_id;但是,它正在抛出一个错误。
MySQL 2::error :您的SQL语法出现了错误;请检查与您的MySQL服务器版本相对应的手册,以便在第2行使用接近“CREATE替换视图debtors_customer_balances AS SELECT”的语法:如果存在debtors_customer_balances,则删除表;创建或替换视图debtors_customer_balances作为SELECT customer_id,等等……
我不知道是什么导致了这一点,因为这个查询在mac上运行得很好,只是在中,我似乎得到了这个语法错误。
我使用的gem是mysql2 (0.3.18)
发布于 2016-08-23 04:57:01
这是由第一行DROP TABLE IF EXISTS debtors_customer_balances;引起的,实际上应该是DROP VIEW ...。删除第一行,它就能工作了。无论如何,您使用的是CREATE OR REPLACE VIEW debtors_customer_balances,那么之前添加DROP语句意味着什么呢?
https://stackoverflow.com/questions/39092545
复制相似问题