0

我剛剛在Windows 10上安裝了Bash,安裝了libmysqlclient-dev軟件包,並運行了一個rake任務,該任務執行下面的查詢以使用ActiveRecord :: Base.connection在mysql數據庫上創建一個VIEW .execute創建VIEW的Mysql2語法錯誤

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; 

然而,它拋出一個錯誤

Mysql2::Error: 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 'CREATE OR REPLACE VIEW debtors_customer_balances AS SELECT ' at line 2: DROP TABLE IF EXISTS debtors_customer_balances; CREATE OR REPLACE VIEW debtors_customer_balances AS SELECT customer_id, etc...

我想不出什麼導致這個作爲查詢運行在Mac罰款,它只是在bash窗戶我似乎得到這個語法錯誤。

我使用的寶石mysql2(0.3.18)

回答

0

它是由第一線DROP TABLE IF EXISTS debtors_customer_balances;這實際上應該是DROP VIEW ...,而不是造成的。刪除第一行,它應該工作。無論如何,你正在使用CREATE OR REPLACE VIEW debtors_customer_balances那麼添加前DROP聲明的含義是什麼?

+0

修復了查詢以便它可以運行,但不幸的是,DROP TABLE行存在的原因是因爲在db:seed的末尾調用了此查詢,並且出於某種原因,VIEWS作爲TABLES添加到模式,因此當db:schema:load作爲種子(db:reset)的一部分運行時,它會將這些視圖創建爲表,並在它到達此查詢時發生錯誤。 –

+0

通過使用ActiveRecord :: SchemaDumper.ignore_tables = ['debtors_customer_balances','debtors_customer_entity_balances']修復了在架構中將VIEWS添加爲架構中的問題。 –