Rails数据库迁移基本操作
程序员文章站
2022-07-15 20:07:17
...
1.安装ruby
2.安装mysql
3.安装migrations
4.添加Rakefile文件,并加入内容
5.添加数据库配置(在db目录下的config.yml文件中)
rake -T 查看所有rake的命令
5.1.手动创建数据库
在此也可以不用手动创建数据库,首先要完成config.yml的配置,然后执行
rails会按照config.yml中配置的数据库名称创建数据库
5.2.配置config.yml
6.创建数据库迁移
7.编辑生成的XXXXXX.rb 文件:
创建表
执行迁移时如果表存在删除后再执行创建用:force: true
创建表执行:rake db:setup
支持的数据类型
Active Record 支持的数据类型包括:
表的操作
创建表
删除表(表名)
重命名表(旧表名,新表名)
增加列(表名,列名,列类型,属性)
移除列(表名,列名)
重命名列(表名,旧列名,新列名)
修改列(表名,列名,列类型,属性)
增加索引(表名,列名,属性)
移除索引(表名,列名)
8.执行迁移
回滚
这个命令会回滚上一次迁移,撤销 change 方法中的操作,或者执行 down 方法。如果想撤销多个迁移,可以使用 STEP 参数:
这个命令会撤销前三次迁移。
db:migrate:redo 命令可以回滚上一次迁移,然后再次执行迁移。和 db:rollback 一样,如果想重做多次迁移,可以使用 STEP 参数
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