Синтаксическая ошибка SQL с Jruby в Engineeryard

#sqlite #jruby

#sqlite #jruby

Вопрос:

Я немного развлекаюсь с Jruby, но у меня возникают проблемы с развертыванием моего приложения на Engineeryard. При развертывании я получаю следующую ошибку:

 ActiveRecord::JDBCError: 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 '(2147483647) DEFAULT NULL' at line 1: ALTER TABLE `iterations` CHANGE `points` `points` longtext(2147483647) DEFAULT NULL
  

Несмотря на то, что моя database.yml использует SQLITE, а не MySQL. Файл миграции указан как:

 class ChangePointsToLongtext < ActiveRecord::Migration
  def up
    change_column :iterations, :points, :longtext
  end

  def down
    change_column :iterations, :points, :text
  end
end
  

Я почти уверен в этом change_column — я пробовал t.change и искал другие изменения синтаксиса. Я думаю, что это может быть проблема с версией Jruby, запущенной на Engineeryard, которую я не могу обновить.

Мой GemFile выглядит следующим образом:

 platforms :jruby do
 gem 'jruby-openssl'
 gem 'trinidad'
 gem 'activerecord-jdbc-adapter'
gem 'activerecord-jdbcmysql-adapter'
gem 'jdbc-mysql', :require => false
 gem 'jdbc-sqlite3', :require => false
 end
  

Итак, я полагаю, что у меня загружены все соответствующие драгоценные камни для создания базы данных в Jruby, хотя я могу сильно ошибаться! Я думаю, мне просто нужна альтернатива change_column

Кто-нибудь сталкивался с подобной проблемой? Или есть какие-либо рекомендации по изменениям? любая помощь всегда приветствуется!

Спасибо C

Ответ №1:

Во-первых, пожалуйста, используйте https://support.cloud.engineyard.com / если вам нужна помощь с Engine Yard.

Во-вторых, EY не поддерживает SQLite. Когда ваше приложение будет развернуто в EY, EY заменит database.yml соответствующую информацию, чтобы ваше приложение могло использовать базу данных, указанную в конфигурации среды. При настройке среды по умолчанию выбирается база данных MySQL.

И, наконец, похоже, что что-то генерирует неправильный оператор SQL. Поскольку аналогичная миграция работает с MRI и mysql2 адаптером, проблема, вероятно, связана с адаптером JDBC. Вы можете открыть проблему по адресу https://github.com/jruby/activerecord-jdbc-adapter/issues или http://bugs.jruby.org.

Спасибо.

Комментарии:

1. Спасибо — я пробовал engineeryard, они просто никогда не возвращались ко мне.

2. Если вы можете сообщить мне номер заявки, я рассмотрю это. Извините за ваш неудачный опыт.