`

JRuby on Rails连接MySQL遇到的一个问题。

    博客分类:
  • Ruby
阅读更多
按照官方的wiki安装好JRuby、Rails以及需要的adapter、JDBC之后,我试着建了个rails项目,结果数据库建立不起来。执行rake db:create似乎一切正常,没有输出任何错误,结果一执行rake db:migrate就出错:

The driver encountered an error: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown database 'jrubydemo_development'

难道数据库没建建立起来?反复对照wiki看我的database.yml配置确定没有错之后,开始google,结果只见到人提问,没见到人解决。最后我去翻Rails的源代码,找到databases.task文件,发现原来它只认识'mysql',不认识'jdbcmysql'。如果把database.yml里的adapter改回'mysql',运行rake db:create的时候会找不到驱动,因为这样rails会去找C或者ruby写的mysql驱动而不是java的jdbc驱动:

!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.

最后解决的办法是,把"%jruby_home%\lib\ruby\gems\1.8\gems\rails-2.3.4\lib\tasks\databases.task"中所有的 when 'mysql'替换成when 'jdbcmysql'。
保存之后再来试试:
rake db:create
rake db:migrate

成功!

估计jruby上安装的rails跟ruby上安装的rails是同一个源,没有专门的jruby版。。


====================================================================

另外,又遇到个问题,好像JDBC驱动居然不认识longtext类型……
搜索了一下,解决办法在这:http://kenai.com/projects/jruby/pages/Adding_Datatypes_to_ActiveRecord-JDBC
按这个办法试了试,不行。。
后来发现是因为默认生成的代码是这样的:
  def self.up
    create_table :blogs do |t|
      t.string :title
      t.longtext :content

      t.timestamps
    end
  end

改成这样就行了:
  def self.up
    create_table :blogs do |t|
      t.string :title
      t.column :content, :longtext

      t.timestamps
    end
  end


JRuby真蛋疼……睡觉。

p.s: JavaEye博客居然没有JRuby分类。。
分享到:
评论

相关推荐

    jRuby On Rails WEB2.0

    Ruby on Rails(简称RoR或Rails)是一个用于web开发的模型-视图-控制器(MVC)框架,用Ruby语言编写。Rails强调“约定优于配置”(Convention Over Configuration,CoC)的原则,大大简化了Web应用的开发过程,使得...

    Apress - Practical JRuby on Rails Web 2.0 Projects (Sep 2007)

    《JRuby on Rails Web 2.0 实用项目》 英文PDF + 源码

    JRuby on Rails Web 2.0 Projects

    - **电子商务平台**:通过构建一个完整的电子商务网站来演示JRuby on Rails在实际项目中的应用,涉及用户管理、商品列表、购物车等功能模块。 - **社交媒体应用**:开发一个具有用户动态、好友系统、消息推送等特性...

    Code Review&JRuby on Rails

    另一方面,JRuby是Ruby的一个实现,它允许在Java平台上运行Ruby代码,为Java开发者提供了利用Ruby on Rails框架的机会。《Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to Java》这本书可能...

    jruby_on_rails

    JRuby on Rails 是一个基于 JRuby 实现的 Ruby on Rails 框架的版本,允许开发者在 Java 平台上利用 Rails 的强大功能进行 web 应用开发。Ruby on Rails(简称 Rails)是由 David Heinemeier Hansson 创建的,它是一...

    Netbeans 6.0 JRuby on Rails 演示

    Netbeans 6.0 JRuby on Rails demo

    Netbeans 6.0 JRuby on Rails 演示 .swf

    Netbeans 6.0 JRuby on Rails 演示 .swf

    JRuby和Rails-让Ruby语言融入于Java项目.rar

    6. **案例研究**:提供实际的项目案例,展示如何在Java企业级环境中成功实施JRuby和Rails,解决可能遇到的问题和挑战。 7. **社区和工具**:列出相关的开源库、插件和工具,以及JRuby和Rails社区资源,帮助开发者...

    2009 KungFu Rails大会JRuby演讲PPT

    KungFu Rails大会是一个专注于Ruby on Rails技术的活动,而JRuby则是Ruby的一个重要实现,它允许开发者在Java平台上运行Ruby代码,从而利用Java的生态系统。 首先,JRuby是一个开源的、符合Ruby语言规范的实现,由...

    结合使用 Oracle 和 Ruby on Rails 教程

    Oracle 是一款强大的关系型数据库管理系统,而 Ruby on Rails(简称 Rails)则是一个流行的开源Web开发框架。将两者结合使用可以创建高效、稳定且可扩展的Web应用。本教程旨在帮助开发者了解如何在Rails应用中集成...

    heroku-jruby-rails-4

    标题 "heroku-jruby-rails-4" 指向的是一个专为在 Heroku 平台上部署基于 JRuby 和 Rails 4 框架的应用程序而设计的种子项目。这个项目提供了一种快速启动和运行的方法,帮助开发者能够轻松地在 Heroku 上配置和部署...

    NetBeans Ruby and Rails IDE with JRuby 2009

    - **解决Gems仓库权限问题**:有时可能会遇到Gems安装失败的问题,这通常与权限设置有关。 - **从命令行使用Gem工具**:除了在IDE内操作外,还可以直接通过命令行来管理Gems。 - **安装具有本地扩展的Gems**:某些...

    jruby-lab:JRuby的实验室是jruby内容的存储库。 带有示例和参考

    JRuby实验室JRuby的实验室是一个包含来自JRuby的示例和参考的存储库。 JRuby的主要传播网站- Wiki和文章一点JRuby历史 JRuby Wiki以及开始使用JRuby进行学习的方式 JRuby on Rails的Wiki部分 有关在JRuby中进行编程...

    jruby1.7.8版本呢

    **JRuby 1.7.8 版本详解** JRuby 是一个开源的、高...总之,JRuby 1.7.8 是一个强大的工具,它连接了 Ruby 和 Java 两个世界,提供了丰富的可能性。无论是开发新项目还是迁移已有应用,JRuby 都是一个值得考虑的选择。

Global site tag (gtag.js) - Google Analytics