0

Ich habe Bash auf Windows 10, installiert das libmysqlclient-dev-Paket und eine Rake-Task ausgeführt, die die folgende Abfrage zum Erstellen einer VIEW auf einer MySQL-Datenbank mit ActiveRecord :: Base.connection ausgeführt wird .ExecuteMysql2 Syntax Fehler beim Erstellen VIEW

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; 

Allerdings ist es wirft einen Fehler

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...

ich kann nicht herausfinden, was das verursacht, wie die Abfrage von einem mac fein läuft, es ist nur in bash für Fenster ich scheine Bekomme diesen Syntaxfehler.

Das Juwel ich benutze ist mysql2 (0.3.18)

Antwort

0

Es wird von der ersten Zeile verursacht wird DROP TABLE IF EXISTS debtors_customer_balances; die sollte DROP VIEW ... tatsächlich statt sein. entferne diese erste Zeile und es sollte funktionieren. Wie auch immer, Sie verwenden CREATE OR REPLACE VIEW debtors_customer_balances dann was ist die Bedeutung des Hinzufügens dieser DROP Anweisung vor?

+0

Das behebt die Abfrage, so dass es ausgeführt werden kann, aber leider ist der Grund, dass DROP TABLE-Zeile vorhanden ist, da diese Abfrage am Ende des db: seed aufgerufen wird, und aus irgendeinem Grund die VIEWS als TABLES hinzugefügt werden Schema, wenn also db: schema: load als Teil eines resed (db: reset) ausgeführt wird, erstellt es diese Ansichten als eine Tabelle und Fehler, wenn es zu dieser Abfrage kommt. –

+0

Das Problem behoben, bei dem VIEWS als TABLES im Schema hinzugefügt wurden, indem 'ActiveRecord :: SchemaDumper.ignore_tables = ['debtors_customer_balances', 'debtors_customer_entity_balances']' 'verwendet wurde –

Verwandte Themen