在EngineYard下Jruby的SQL语法错误

时间:2011-11-14 10:14:06

标签: sqlite jruby

我和Jruby有一些乐趣,但是我在使用EngineYard部署应用程序时遇到了麻烦。在部署下,我收到以下错误:

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并四处寻找其他语法更改。我认为在EngineYard上运行的Jruby版本可能存在问题 - 我无法更新。

我的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 个答案:

答案 0 :(得分:0)

首先,如果您需要有关Engine Yard的帮助,请使用https://support.cloud.engineyard.com/

其次,EY不支持SQLite。当您的应用程序部署到EY时,EY将使用适当的信息替换database.yml,以便您的应用程序可以使用环境配置中指示的DB。在设置环境时,DB选项应默认为MySQL。

最后,似乎有些东西正在生成错误的SQL语句。看到类似的迁移适用于MRI和mysql2适配器,问题可能在于JDBC适配器。您可以在https://github.com/jruby/activerecord-jdbc-adapter/issueshttp://bugs.jruby.org打开问题。

感谢。