0

Я только что установил Bash в Windows 10, установил пакет libmysqlclient-dev и выполнил задачу rake, которая выполняет нижеприведенный запрос для создания VIEW в базе данных mysql с использованием ActiveRecord :: Base.connection .ExecuteОшибка создания синтаксиса Mysql2 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; 

Однако, он бросает ошибку

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

Я не могу понять, что причина этого, как запрос работает отлично от макинтоша, это просто в Баше для окон я, кажется, получить эту синтаксическую ошибку.

Жемчужиной я использую 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 добавляются как ТАБЛИЦЫ в схема, поэтому, когда db: schema: load запускается как часть reseed (db: reset), она создает эти представления как таблицу и ошибки, когда она попадает в этот запрос. –

+0

Исправлена ​​ошибка с добавлением VIEWS как ТАБЛИЦЫ в схеме с помощью 'ActiveRecord :: SchemaDumper.ignore_tables = ['debtors_customer_balances', 'debtors_customer_entity_balances']' –