我和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
答案 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/issues或http://bugs.jruby.org打开问题。
感谢。