`

让ActiveRecord在失出连接后自动重新连接数据库

阅读更多
看到了这个,也可以对大家有用,所以就贴出来了。
原文地址:http://snippets.dzone.com/posts/show/5519

我将以下的代码命名为active_record_hacks.rb放在config/initializers目录中,但是它也可以很容易地作为插件使用。

ActiveRecord::ConnectionAdapters::MysqlAdapter.module_eval do
  def execute_with_retry_once(sql, name = nil)
    retried = false
    begin
      execute_without_retry_once(sql, name)
    rescue ActiveRecord::StatementInvalid => exception
      ActiveRecord::Base.logger.info "#{exception}, retried? #{retried}"

      # Our database connection has gone away, reconnect and retry this method
      reconnect!
      unless retried
        retried = true
        retry
      end
    end
  end

  alias_method_chain :execute, :retry_once
end

分享到:
评论

相关推荐

    11种连接数据库的方法

    数据库是存储和管理数据的核心工具,对于任何软件应用而言,高效稳定地连接数据库至关重要。本文将详细介绍11种常见的数据库连接方法,涵盖多种编程语言和数据库类型。 1. **Java JDBC(Java Database Connectivity...

    ActiveRecord简单实例_activerecord.zip

    在Ruby on Rails框架中,ActiveRecord是一个至关重要的组件,它负责模型(Model)与数据库之间的交互。本实例将深入探讨ActiveRecord的基本用法,帮助理解如何在实际开发中有效地运用这个强大的工具。 首先,让我们...

    jfinal+echarts连接数据库显示图表(附数据库)

    以上就是使用JFinal和ECharts连接数据库并显示图表的基本流程。通过这个过程,你可以根据实际需求调整SQL查询,创建各种复杂的图表,同时,ECharts的交互性和可定制性也能满足多种数据分析和展示的需求。在实际项目...

    Pro ActiveRecord Databases with Ruby and Rails.pdf

    4. **多数据库支持**: 支持连接多个数据库,并能够在不同的数据库之间切换。 5. **安全性**: ActiveRecord提供了安全措施来防止SQL注入攻击。 #### 六、实战案例分析 本书还包含了许多实际应用场景的案例研究,例如...

    NHibernate中文教程+activerecord

    配置NHibernate涉及到设置数据库连接字符串、配置文件(如hibernate.cfg.xml)以及实体类的映射文件。 2. **对象关系映射** NHibernate允许将数据库表映射到.NET类,表中的列对应类的属性。使用XML或注解进行映射...

    Jfinal数据库基本操作 连接数据库以及Model创建.docx

    本文将详细介绍如何在Jfinal中完成数据库的基本操作,包括连接数据库、配置插件以及创建Model等过程。 #### 二、环境搭建与准备工作 在开始之前,我们需要做一些准备工作,确保开发环境已经搭建好,并且具备必要的...

    Castle ActiveRecord 2.0

    安装 Castle ActiveRecord 包后,需要在应用程序的配置文件(如 web.config 或 app.config)中配置数据源、连接字符串和 NHibernate 映射文件的位置。通常还需要配置 ActiveRecord 插件和 Session 工厂。 **5. 使用...

    ASP实现ActiveRecord数据查询更新 v1.0-ASP源码.zip

    2. **连接数据库**:在ASP页面中,你需要设置数据库连接字符串,使用ADODB.Connection对象建立到数据库的连接。 3. **映射关系**:在类中定义方法,将类实例与数据库表关联起来。这通常包括构造函数来初始化连接,...

    基于ASP的实现ActiveRecord数据查询更新 v1.0.zip

    - ActiveRecord基类:定义了基本的数据库操作方法,如连接数据库、执行SQL、保存和删除记录等。 - 数据模型类:继承自基类,每个模型类对应数据库中的一个表,提供了特定表的属性和方法。 - 查询方法:可能包括根据...

    Ruby-DataObjects企图重写现有的Ruby数据库驱动程序符合一个标准接口

    这个项目的主要目标是让开发者能够在不改变代码的情况下,轻松地切换数据库后端,这极大地提高了代码的可移植性和数据库系统的互换性。 在Ruby开发中,数据存取通常依赖于特定数据库系统的驱动程序,例如...

    Castle ActiveRecord帮助文档.rar

    Castle ActiveRecord是.NET开发中的一个强大的ORM(对象关系映射)框架,它建立在NHibernate之上,为.NET开发者提供了更高级别的抽象,使得数据库操作更加便捷。这个“Castle ActiveRecord帮助文档.rar”压缩包包含...

    Apress Pro ActiveRecord Databases with Ruby and Rails.pdf

    1. **自动化的表映射**:ActiveRecord可以根据类名自动推断出对应的数据库表名,并根据类属性推断出表中的列。 2. **数据验证**:提供了丰富的验证规则,如唯一性验证、存在性验证等,确保数据的完整性和一致性。 3....

    PHP库通过返回原始SQL来实现ActiveRecord 用于PHP5.3和NO PDO场景的yii2 ORM移植

    此外,对于不熟悉PDO的开发者,这个库提供了一个熟悉且易于使用的接口,让他们能在不支持PDO的环境中继续使用类似Yii2的ActiveRecord模式。 总的来说,"ArSql"是一个为PHP5.3和无PDO环境量身定制的数据库访问解决...

    ASP.NET源码——ActiveRecord简单实例.zip

    这个实例主要展示了如何在ASP.NET项目中使用ActiveRecord模式,让我们一起探索其中的关键知识点: 1. **对象关系映射(ORM)**:ORM允许开发者使用面向对象的方式来操作数据库,避免了直接编写SQL语句,提高了代码...

    Working with Database(数据库开发工作).docx

    - **DSN格式**:DSN(数据源名称)用于指定连接数据库所需的信息。其格式依赖于所使用的PDO数据库驱动。 - **常见DSN格式**: - SQLite: `sqlite:/path/to/dbfile` - MySQL: `mysql:host=localhost;dbname=...

    基于ActiveRecord思想开发的至简化的java的Orm框架.zip

    ActiveRecord是一种设计模式,常用于数据库访问层,它将数据库中的表映射为对象,使得开发者可以使用面向对象的方式来操作数据库。在Java中,虽然原生并没有内置支持ActiveRecord的库,但我们可以根据这一思想自行...

    Ruby-DatabaseCleaner在Ruby中清洗数据库的策略

    这种方法在单个数据库连接中非常有效,因为它能保证每个测试都在一个独立的事务中运行,但是当测试涉及多个数据库连接时,可能会出现问题。 4. **Schema Load Strategy**:该策略在每个测试之前和之后都会加载...

    mysql php连接类

    虽然这个类提供了一种简单的数据库操作方式,但它没有使用面向对象的数据库访问层(如PDO或ActiveRecord模式),也没有事务处理、错误处理或数据库连接的关闭。在实际项目中,推荐使用更高级的库或框架来处理数据库...

    Seamless_database_pool:在ActiveRecord中添加对主从数据库集群的支持以提高性能

    在Ruby on Rails应用中,数据访问层主要由ActiveRecord库负责,它是一个强大的ORM(对象关系映射)工具,能够方便地将数据库操作转化为面向对象的代码。然而,随着应用程序的增长,单一数据库服务器可能无法满足高...

    ActiveWrite,用于自动生成实体代码

    它能够读取数据库架构,自动创建符合NHibernate或ActiveRecord规范的实体类。开发者只需要设置好数据库连接信息,ActiveWrite会生成相应的C#代码,大大减少了手动编码的时间。对于大型项目,这样的自动化工具尤其有...

Global site tag (gtag.js) - Google Analytics