`

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



分享到:
评论

相关推荐

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

    在Ruby on Rails框架中,数据库迁移是开发过程中不可或缺的一部分,用于管理数据库模式的变化。本文将深入探讨Rails中的rake工具和数据库迁移的概念,以及如何正确地利用它们。 首先,Rails中的Migration是数据库...

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

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

    独立迁移:在非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 ...

    Ruby on Rails:数据库设计与迁移教程.docx

    Ruby on Rails:数据库设计与迁移教程.docx

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

    在数据库迁移方面,SecondBase扩展了ActiveRecord的迁移命令,使得你可以针对每个数据库运行单独的迁移。这意味着你可以对每个数据库进行定制化的结构更新,而不会影响到其他数据库。在Rails的命令行中,你可以指定...

    Ruby-Multiverse让Rails支持多数据库

    Multiverse还提供了方便的数据迁移工具,使得对不同数据库的迁移操作变得直观。在运行`rails db:migrate`命令时,可以通过指定环境变量`MULTIVERSE_DATABASE`来选择迁移哪个数据库的模型。例如,`MULTIVERSE_...

    rails向导打包

    4. **Rails 数据库迁移(Migrations)**: Migrations 是 Rails 中用于数据库结构版本控制的工具。它们允许开发者以编程方式添加、修改或删除表列,而不必直接操作 SQL。文件将涵盖创建、运行和回滚迁移,以及使用 `...

    Ruby on Rails入门例子

    - **数据库迁移(Database Migrations)**:Rails使用迁移来管理数据库结构的变化。通过`rails generate migration AddTitleToPosts title:string`创建迁移,然后运行`rails db:migrate`执行迁移。 - **...

    ruby on rails对mongodb的操作

    这通常用于混合使用关系型数据和非关系型数据,或者在迁移过程中逐步替换数据库。在这种情况下,需要分别配置`ActiveRecord`和`Mongoid`(或`MongoMapper`),并确保数据访问层的代码能够正确识别和处理两种数据库...

    《web开发敏捷之道 应用rails进行敏捷web开发》(第一版)的depot源代码

    8. **Rake任务**:Rake是Ruby的构建工具,类似于Java的Ant或Python的setup.py,`rake db:migrate`命令常用于执行数据库迁移。 9. **测试驱动开发(TDD)**:Rails鼓励TDD,书中可能包含测试代码,如使用RSpec或Test::...

    Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码。

    1. **Rakefile**:这是Rails项目中的任务脚本文件,包含了可执行的任务集合,如数据库迁移、测试运行等。 2. **README**:这个文件通常包含项目的简要介绍、安装指南和使用说明,是新用户理解项目用途和如何开始的...

    语言后端:Lin-guage应用程序的Ruby on Rails数据库

    总的来说,"语言后端:Lin-guage应用程序的Ruby on Rails数据库"涉及的内容包括但不限于Ruby on Rails的MVC架构、Active Record ORM、数据库配置、模型创建、数据库迁移、关联关系、查询优化以及性能提升策略。...

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

    3. **创建数据库**:切换到项目目录并运行数据库迁移脚本: ```bash cd jujube rake db:create:all ``` 4. **生成Scaffold**:用于快速构建模型、控制器和视图: ```bash ruby script/generate scaffold ...

    Ruby+for+Rails

    6. **数据库迁移(Migrations)** Rails使用迁移来管理数据库结构的变化。`rails generate migration AddColumnToBooks column:type`会生成一个新的迁移文件,然后通过`rails db:migrate`执行迁移,更新数据库。 7...

    Rails入门教程一(翻译)

    - **db**:数据库相关文件夹,包含数据库迁移文件和初始化脚本。 - **test**:测试文件夹,包含功能测试、集成测试和单元测试文件。 - **public**:静态资源文件夹,包含HTML、CSS、JavaScript等文件。 - **script**...

    rails指南 中文版

    6. **Scaffolding**:Rails提供了快速生成基本CRUD(Create, Read, Update, Delete)操作的命令行工具,可以自动生成控制器、视图、样式表和测试文件,方便快速搭建原型。 7. **Testing**:Rails强调测试驱动开发,...

    ruby_on_rails 源代码上

    Scaffolding是Rails提供的一种快速构建CRUD操作的工具,它会自动生成模型、控制器、视图和数据库迁移文件,为开发者提供一个基本的交互界面。 12. **社区与资源** Ruby on Rails拥有庞大的开发者社区,提供了丰富...

Global site tag (gtag.js) - Google Analytics