0

Windows 10でBashをセットアップし、libmysqlclient-devパッケージをインストールし、以下のクエリを実行するrakeタスクを実行して、ActiveRecord :: Base.connectionを使用してmysqlデータベースにVIEWを作成しています。しかし、それは私がこのクエリは、MACから正常に動作として、それは窓のためにちょうどbashでだ、私がいるように見える原因何を把握することはできませんエラーMysql2の構文エラーが発生しました

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

を投げている.execute

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; 

この構文エラーを取得します。

私が使用している宝石は、それが実際にDROP VIEW ...が代わりにする必要があります最初の行DROP TABLE IF EXISTS debtors_customer_balances;によって引き起こされますmysql2(0.3.18)

答えて

0

です。その最初の行を削除し、それが動作するはずです。とにかく、あなたはCREATE OR REPLACE VIEW debtors_customer_balancesを使用しています。その前にそのDROP文を追加する意味は何ですか?

+0

これは実行できるようにクエリを修正しますが、残念ながらDROP TABLE行が存在するのは、このクエリがdb:seedの最後に呼び出され、何らかの理由でVIEWSがTABLESに追加されるためです。 db:schema:loadがreseed(db:reset)の一部として実行されると、これらのビューがテーブルとして作成され、このクエリに到達するとエラーが発生します。 –

+0

スキーマ内でVIEWSがテーブルとして追加される問題を修正しました。これは 'ActiveRecord :: SchemaDumper.ignore_tables = ['debtors_customer_balances'、 'debtors_customer_entity_balances']' –

関連する問題