• ruby应用如何选择mysql适配器


    rails2.2之前缺省安装mysql的驱动,之后缺省的已经变成sqlite3,如果与mysql连接,则需要自己选择安装。
    在学习开源系统的时候,发现有的rails3的应用直接使用的是mysql2

    在database.yml中直接是按照如下方式

    development:
      adapter: mysql2
      encoding: utf8
      database: baseapp
      username: root
      password:
      host: localhost

     

    在github查询之后,有一个三种ruby mysql 适配器的比较(三万行数据的遍历操作):

       user       system     total       real
    Mysql2
    0.750000 0.180000 0.930000 ( 1.821655)
    do_mysql
    1.650000 0.200000 1.850000 ( 2.811357)
    Mysql
    7.500000 0.210000 7.710000 ( 8.065871)

     

    可见mysql2的性能要高出许多。

     

    注:

    在windows、linux环境下会出现如下错误:

    Building native extensions.  This could take a while...
    ERROR:  Error installing mysql2:
            ERROR: Failed to build gem native extension.

    。。。

    1、windows的解决方案:将mysql安装目录下的bin下的libmysql.dll复制到 ruby安装目录/lib下即可;在系统

    2、linux的解决方案:在系统中找两个文件:libmysqlclient.so,mysql.h所在的目录,假设分别是/a和/b,然后执行下面操作即可:

    gem install mysql2 -- --with-mysql-lib=/a --with-mysql-include=/b

    通过源代码安装mysql的一般都有这样的文件 如果没有,则需要到网上下载libmysqlclient-dev

     

    今天遇到了新的问题:

    ruby1.8.7,rails2.3.8,gem install mysql2之后,进入console状态时,老是提示

    D:/ir3/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in `establish_connection':RuntimeError: Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (no such file to load -- java)

    这和Java有什么关系?

    于是删除与jdbc相关的gem包,提示又变成如下:

    D:/ir3/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in `establish_connection':RuntimeError: Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (no such file to load -- active_record/connection_a
    dapters/mysql2_adapter)


    但是gem install activerecord-mysql2-adapter 根本不能使用,也就是没有这个gem包。


    于是参照linux下的重新安装mysql2,将mysql目录添加;

    gem install mysql2 -- --with-mysql-config=d:/ir3/mysql

    安装成功后,执行ruby script/console,不再提示错误。

    但是测试,查看类,键入User,返回正常;但是想查看一个记录,如User.first则出现“ArgumentError: invalid date”的错误。

    嗨,在windows环境下,还是暂时回到mysql吧。

    风之境地 java-javascript 蘑菇街女装

  • 相关阅读:
    C#生成唯一值的方法汇总
    WCF中可以使用SVCUtil.exe生成客户端代理类和配置文件
    C# 打开钱箱支持北洋、佳博、爱普生
    MVC使用 Elmah 日志记录组件
    C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(一)
    C# Gma.QrCodeNet生成二维码
    支付宝支付开发——当面付条码支付和扫码支付
    微信支付四大支付模式分别有哪些区别?
    web安全测试---AppScan扫描工具
    SVN 使用学习记录
  • 原文地址:https://www.cnblogs.com/sky7034/p/1992309.html
Copyright © 2020-2023  润新知