欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Rails数据库迁移基本操作

程序员文章站 2022-07-15 20:07:17
...
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



相关标签: rails mysql ruby