`

Rails数据库迁移基本操作

阅读更多
1.安装ruby
apt-get install ruby-dev


2.安装mysql
 apt-get install libmysqlclient-dev 

 gem install mysql

 apt-get install mysql-server 



3.安装migrations
gem install standalone_migrations


4.添加Rakefile文件,并加入内容

 touch Rakefile 
 vi Rakefile 

 require 'standalone_migrations'
 StandaloneMigrations::Tasks.load_tasks


5.添加数据库配置(在db目录下的config.yml文件中)

rake -T 查看所有rake的命令

5.1.手动创建数据库
mysql -uroot -pchina-ops
create databases ecloud_financial;

在此也可以不用手动创建数据库,首先要完成config.yml的配置,然后执行
 rake db:create

rails会按照config.yml中配置的数据库名称创建数据库

5.2.配置config.yml
 mkdir db
 tocuh config.yml


 development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: ecloud_financial
  pool: 5
  username: root
  password: china-ops
  socket: /var/run/mysqld/mysqld.sock
 production:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: somedatabase_dev
  pool: 5
  username: root
  password:
  socket: /var/run/mysqld/mysqld.sock
 test: &test
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000


6.创建数据库迁移
 rake db:new_migration name=test_create_table


7.编辑生成的XXXXXX.rb 文件:

创建表
 class TestCreateTables < ActiveRecord::Migration
  def change
   create_table :test_tables do |t|
     t.string :name
     t.column :is_active, :integer, default: 0
     t.column :status, :boolean, default: true
     t.integer:code
     t.string :limitation
    end
  end
 end

执行迁移时如果表存在删除后再执行创建用:force: true
创建表执行:rake db:setup
 class TestCreateTables < ActiveRecord::Migration
  def change
   create_table :test_tables ,force: true do |t|
     t.string :name
     t.column :is_active, :integer, default: 0
     t.column :status, :boolean, default: true
     t.integer:code
     t.string :limitation
    end
  end
 end


支持的数据类型
Active Record 支持的数据类型包括:
    :binary
    :boolean
    :date
    :datetime
    :decimal
    :float
    :integer
    :primary_key
    :string
    :text
    :time
    :timestamp


表的操作

创建表
create_table(table,options) do |t|
...columns...
end


删除表(表名)
drop_table(table) 


重命名表(旧表名,新表名)
rename_table(table,new_name)


增加列(表名,列名,列类型,属性)
add_column(table,column,type,options)


移除列(表名,列名)
remove_column(table,column)


重命名列(表名,旧列名,新列名)
rename_column(table,column,new_name)


修改列(表名,列名,列类型,属性)
change_column(table,column,type,options) 


增加索引(表名,列名,属性)
add_index(table,column,options)


移除索引(表名,列名)
remove_index(table,column)



8.执行迁移
 rake db:migrate


回滚
 rake db:rollback

这个命令会回滚上一次迁移,撤销 change 方法中的操作,或者执行 down 方法。如果想撤销多个迁移,可以使用 STEP 参数:
 rake db:rollback STEP=3

这个命令会撤销前三次迁移。
db:migrate:redo 命令可以回滚上一次迁移,然后再次执行迁移。和 db:rollback 一样,如果想重做多次迁移,可以使用 STEP 参数
 rake db:migrate:redo STEP=3



分享到:
评论

相关推荐

    flyway-rails:用于 Rails 数据库迁移的 Flyway 周围的薄包装器

    用于 Rails 数据库迁移的薄包装器 添加 rake 任务来管理您的数据库架构。 将此 gem 添加到您的 Rails 应用程序中: gem 'flyway-rails', github: 'bluerogue251/flyway-rails' 在应用程序的初始化程序中,设置...

    浅谈Ruby on Rails下的rake与数据库数据迁移操作

    Rails中的Migration相对来说更适合做数据库的对象集合操作,而自动化的rake则是一个较好的选择,下面来浅谈Ruby on Rails下的rake与数据库数据迁移操作,需要的朋友可以参考下

    独立迁移:在非Rails项目中使用Rails数据库迁移的瑰宝

    非Rails(和非Ruby)项目中的Rails迁移。 什么是新的 在6.x版本中,由于增加了对Rails 6迁移的支持。 在5.x版本中,我们转向使用Rails 5迁移,而不是维护我们自己的迁移相关代码。 使用Rails 5迁移几乎可以做的任何...

    galera_cluster_migrations:帮助使用 MariaDB Galera Cluster 执行 Rails 数据库迁移的 gem

    GaleraClusterMigrations GaleraClusterMigrations 有助于缓解使用执行 Rails 数据库迁移的一些问题。 Galera Cluster 提供了两个选项来执行 DDL(数据定义语言)语句:Total Order Isolation(TOI)和 Rolling ...

    跨越边界:Rails迁移

    目前,持久性框架使用两种方法中的一种:映射或包装 。要有效地管理涉及持久性域模型的应用程序变化,必须协调数据、模式和模型...这篇文章研究的Rails模式迁移是一种把每个数据库的模式变化与基本对象模型分离的思想。

    如何利用FluentMigrator实现数据库迁移

    FluentMigrator Fluent Migrator是一个基于...从使用方式上看,它非常像EF/EF Core的数据库迁移脚本,但是它支持的数据库类型比EF/EF Core多的多,且不受限与EF/EF Core。 支持的数据库列表 Microsoft SQL Server

    Ruby-SecondBase为Rails提供双数据库无缝相集成

    SecondBase支持Rails管理双重数据库通过扩展ActiveRecord的任务来创建、迁移和测试您的应用程序

    Ruby on Rails开发 从入门到精通实战教程.rar

    数据库操作: 掌握Rails框架中对数据库的操作方法,包括模型定义、数据迁移、数据查询等数据库操作技巧。 阅读建议: 逐步学习: 按照教程的顺序,逐步学习Ruby on Rails开发的各个知识点,保持持续的学习和实践。 ...

    border-patrol:阻止您的 Rails 服务器启动和运行,而有待处理的数据库迁移

    阻止您的 rails 服务器运行和/或启动,而有任何挂起的数据库迁移。 设置 如果你正在使用 bundler 将 border-patrol 添加到你的 Gemfile: gem 'border-patrol' 然后运行: $ bundle install 否则安装 gem: $...

    good-migrations:在运行数据库迁移时防止Rails自动加载应用程序代码

    该gem防止Rails在运行迁移时自动加载应用程序代码,从而避免了从迁移代码引用ActiveRecord模型的常见错误。 用法 将good_migrations添加到您的gemfile中: gem 'good_migrations' 大功告成! 就是这样。 背景 在...

    clarify_schema:声明您的Railsactive_record模型架构,并为您生成数据库迁移!

    声明您的Rails / active_record模型架构,并为您生成数据库迁移! 例子 创建一个模型并在一个fields do ... end声明您的模式fields do ... end class Company &lt; ActiveRecord :: Base fields do company_name ...

    Humpback:类似于Rails中可用工具的数据迁移工具

    座头鲸是数据库迁移工具受Rails工具和另一个名为Manatee的项目的启发, 。 (我完全接受了海牛的想法,并构建了我想要的工具,以便在网络矩阵之外使用该概念) 数据库迁移类似于rails,它们 。 您的界面是命令行。 #...

    avatars_for_rails:用于管理头像的 Rails gem

    它包括一个数据库迁移和带有 jquery.fileupload 和 jquery.jcrop 的视图 它依赖于回形针和 imagemagick 安装 添加到您的 Gemfile: gem 'avatars_for_rails' 并运行: bundle update 然后,如果您有一个名为 ...

    数据迁移:迁移和更新数据库结构中的数据

    数据迁移 将数据迁移与模式迁移一起运行。 数据迁移存储在db/data 。 它们的行为类似于架构迁移,只是它们应保留用于数据迁移。 例如,如果您意识到需要对所有标题进行标题化,那么这里就是您要做的地方。 我为...

    multiverse:Rails的多个数据库

    多元宇宙 :fire: Rails的多个数据库ActiveRecord支持多个数据库,但是Rails &lt;6没有提供管理它们的方法。 多元宇宙改变了这一点。 另外,到那里时很容易 。 适用于Rails 4.2+安装将此行添加到您的应用程序的...

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    17.7 在迁移任务之外操作数据库结构 231 17.8 管理迁移任务 231 第18章 ActiveRecord第一部分:基础 233 18.1 表和类 233 18.2 字段和属性 234 18.3 主键与ID 237 18.4 连接数据库 238 18.5 CRUD 242 18.6 聚合与...

    风景:Rails的版本化数据库视图

    风景名胜 Scenic将方法添加到ActiveRecord::Migration以在Rails中创建和管理数据库视图。 使用Scenic,可以将SQL视图的功能带到Rails应用程序中,而不必将模式格式切换为SQL。 Scenic提供了版本控制视图的约定,该...

    rails-settings:使用Ruby on Rails管理设置

    Ruby gem通过将ActiveRecord实例的设置作为序列化的Hash存储在单独的数据库表中来处理ActiveRecord实例的设置。 包括命名空间和默认值。 要求 Ruby 2.4或更高版本 Rails 4.2或更高版本(包括Rails 6) 安装 将gem...

Global site tag (gtag.js) - Google Analytics