`
fsword
  • 浏览: 168232 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

rails不支持bigint类型的mysql主键

阅读更多
之前遇到过很多次,老是忘记,今天记录一下吧。

mysql可以支持int、tinyint、bigint等几种数据格式的字段,rails(准确说是activerecord)抽象了数据结构,统一使用integer表示整数,然后根据limit来决定使用哪种int:
# activerecord-2.3.8/lib/active_record/connection_adapters/abstract/schema_definitions.rb
module ActiveRecord
  module ConnectionAdapters #:nodoc:
    # An abstract definition of a column in a table.
    class Column
      def initialize(name, default, sql_type = nil, null = true)
        @name, @sql_type, @null = name, sql_type, null
        @limit, @precision, @scale = extract_limit(sql_type), extract_precision(sql_type), extract_scale(sql_type)
        @type = simplified_type(sql_type)
        @default = extract_default(default)

        @primary = nil
      end
      ......
        def simplified_type(field_type)
          case field_type
            when /int/i
              :integer
            when /float|double/i
              :float
            when /decimal|numeric|number/i
              extract_scale(field_type) == 0 ? :integer : :decimal
            when /datetime/i
              :datetime
            when /timestamp/i
              :timestamp
            when /time/i
            ......
          end
        end
      end
    end
  end
end

但是这个做法仅限于普通字段,activerecord中对于主键存在大量硬编码,因此我们就不能通过改变主键的limit的方式设置int类型。
绕开的办法有两种:
  • 修改 activerecord-2.3.8/lib/active_record/connection_adapters/connection_adapters/mysql_adapter.rb 中的 NATIVE_DATABASE_TYPES 常量
  • 不设置主键,手工指定 id -

    create_table :features, :id => false do |t|
      t.integer :id, :limit => 8
      ......
    end

0
0
分享到:
评论
2 楼 头疼项目 2013-06-09  
wahte?
1 楼 头疼项目 2013-06-09  
[color=blue][/color]

相关推荐

    rails3.1安装与mysql配置 windows

    标题 "rails3.1安装与mysql配置 windows" 涉及到的是在Windows操作系统上安装Ruby on Rails 3.1框架并配置MySQL数据库的过程。这是一个关键的开发环境设置步骤,对于使用Rails进行Web开发的程序员来说至关重要。Ruby...

    rails和mysql数据库连接中出现的问题以及解决办法

    通常,较新的Rails版本支持较新的MySQL版本,但旧版本的Rails可能需要降级MySQL或升级Rails以解决问题。 总结来说,解决Rails与MySQL连接问题涉及检查配置文件、安装和更新依赖、确保系统库完整、确认服务状态和...

    ruby on rails与MySql的环境配置——支持rails 2.3.5以上版本

    本文将详细介绍如何在Windows环境下配置Ruby on Rails以支持Rails 2.3.5及以上版本,并与MySQL进行无缝对接。 首先,我们需要安装Ruby for Windows。你可以从RubyForge网站上下载最新的One-Click Installer版本,...

    ruby on rails MySql

    当在Ruby on Rails项目中使用MySQL作为数据存储时,这两个技术的结合提供了强大的后端支持。 在Rails中集成MySQL,你需要安装特定的数据库适配器,即`mysql2` gem。这个gem允许Rails与MySQL数据库进行通信,处理SQL...

    Ruby on Rails安装及MySQL数据库配置指南

    Ruby on Rails 安装及 MySQL 数据库配置指南 本文详细介绍了 Ruby on Rails 的安装步骤,以及 MySQL 数据库的配置方法,并提供了一些官方阅读资源。 一、Ruby on Rails 安装 Ruby on Rails 的安装可以分为以下几...

    Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf

    ### Ubuntu 11.04下Ruby on Rails与MySQL数据库集成指南 #### 一、安装与配置MySQL数据库 在Ubuntu 11.04环境中,安装MySQL数据库是部署Ruby on Rails应用的重要步骤之一。首先,通过打开终端并执行以下命令进行...

    docker-rails6-mysql8:Rails的mysql设置

    docker-rails6-mysql8 启动Rails设置 跑新轨道 $ docker-compose run web rails new . --force --no-deps --database=mysql --skip-test --webpacker docker镜像构建 $ docker-compose build 编辑database.yml ...

    upknit:用于Rails + Postgresql的自动UUID主键启动器

    使用PostgreSQL将这个gem添加到Rails应用程序中会自动启用UUID主键。 用法 将此宝石添加到您的Rails应用程序中。 安装 将此行添加到应用程序的Gemfile中: gem 'upknit' 然后执行: $ bundle 内部构造 这个gem做...

    Rails支持CoffeeScript扩展RailsBarista.zip

    Barista 可以简单透明的方式让你的 Rails 3 应用支持 CoffeeScript 脚本。 标签:Rails

    rails 连接mysql的问题解决

    – c:/ruby/lib/ruby/gems/1.8/gems/mysql-2.7.3-x86-mswin32/ext/mysql.so 实际上是找不到连接所需的dll文件:libmySQL.dll 在mysql安装目录下的bin目录下将此文件复制到ruby的bin目录下即可解决此问题. ...

    Rails 101 入门电子书

    ### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...

    Mac上rails环境的搭建

    本文将详细介绍如何在Mac系统上搭建一个完整的Rails开发环境,包括Ruby环境配置、Rails框架安装、MySQL数据库安装以及RubyMine集成开发环境的配置等关键步骤。 #### 二、Ruby环境配置 由于Mac系统自带Ruby环境,...

    基于Ubuntu Nginx Mongrel Mysql部署rails monit-5.0

    总结来说,这个部署方案利用了Ubuntu的稳定基础,Nginx的高性能,Rails的开发效率,Mongrel的执行效率,MySQL的数据库支持,以及Monit的监控保障,构建了一个全面且可靠的Web应用基础设施。对于运维人员来说,这样的...

    Rails bundle命令安装mysql gem包出错的解决方法

    解决 Rails bundle 安装不上 mysql gem包的问题 环境 ubuntu 12.04 ruby-2.1.1 首先 新建一个的一个项目,在该项目上执行 bundle install 提示 代码如下: … Make sure that gem install mysql2 -v ‘0.3.16’; ...

    centOS Rails3环境搭建

    为了与Rails应用程序集成,需要安装MySQL数据库服务器及其相关工具。可以通过以下命令安装MySQL及相关图形界面工具: ```bash # 下载并安装MySQL yum install mysql-server mysql-devel # 启动MySQL服务 service ...

    中文版rails教程

    2. **数据库迁移(Database Migrations)**:Rails使用ActiveRecord和SQLite、MySQL或PostgreSQL等数据库系统交互。开发者通过编写迁移文件来定义和修改数据库结构。 3. **路由(Routing)**:Rails的路由系统根据...

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    Rails中使用MySQL分区表一个提升性能的方法

    在Rails应用中,当面临大数据表的处理时,MySQL的分区表是一个实用的优化策略,可以显著提升查询性能。MySQL的分区表特性允许我们将一张大表分割成多个小表,以便于管理和加速查询。在本例中,针对一个名为diet_...

    rails2.3.2

    描述中的 "ruby and rails 的框架rails-2.3.3.zip" 提到的是 Rails 的另一个版本 2.3.3,尽管与标题中的版本号不完全匹配,但我们可以推断这是关于 Rails 2.3.x 系列的讨论。这个压缩包很可能包含了 Rails 框架的源...

Global site tag (gtag.js) - Google Analytics