2023-09-19 09:40AM
注意:migration 一旦建立好,就不要修改!不要删除!
如果要修改数据库,就要建立新的 migration
1. migration:
1). 在 Rails 中,所以的 migration,都是用命令 rails generate migration 创建出来的,并且位于 db/migrate 目录下
2). 在使用 migration 之前要先配置好数据库
配置 Mysql 数据库
2. 使用 config/database.yml 来连接 mysql:
default: &default
# 表示数据库的驱动. eg: mysql2, sqlite……
adapter: mysql2
# 连接数据库的用户名
username: name
# 表示密码
password: password
# 数据的 ip 地址,如果是本机数据库,就是 localhost
host: localhost
encoding: utf8mb4
collation: utf8mb4_unicode_ci
# 表示,这是开发模式下的数据库配置
development:
<<: *default
# 数据库的名字
database: db_name
# 表示,这是测试模式下的数据库配置
test:
<<: *default
# 数据库的名字
database: db_name
# 表示,这是生产模式下的数据库配置
production:
<<: *default
# 数据库的名字
database: db_name
3. 修改 Gemfile
# 根据 rails 版本增加相应的数据库(如果你的 rails 版本也是 4+ 的话,也可以使用这个版本)
gem 'mysql2', '0.3.17'
4. 对于 unbuntu, 要使用下面的命令安装好第三方包
$ sudo apt-get install libmysqlclient-dev
安装好各种 gem
$ bundle install
创建好数据库
# 运行这个命令可以创建好一个数据库
$ bundle exec rake db:create
5. 可以使用 rails generate migration 命令创建表
# 例如,我想新建一个表 users
$ bundle exec rails g migration create_users
会生成下面的内容:
invoke active_record
create db/migrate/20230919125025_create_users.rb
可以看到上面的命令,创建了文件,可以在文件中增加内容
6. 运行
在文件中增加完内容之后,可以在命令行里面运行它
$ bundle exec rake db:migrate
就可以看到 命令行里面给出的提示,什么时候开始的(经过多少秒之后)运行结束
1). 在数据库后台就可以看到它生成了两个表, 一个叫 users. 里面有三个列 id,name,age (因为我在文件中增加了这几个列)
对应 Mysql,id列是必须的,第二列(name)和第三列(age)都是我创建的
2). 另外一个叫 schema_migrations,里面只有一个列,叫 version ,就是20230919125025(刚执行 migration 的名字)
这个表里面保存了它所以执行过的 migration 的名字(这个表专门记录当前数据库的 '迁移 ID '是多少,Rails 就是通过它和 db/migrate 中文件的差异来判断,当前的 Rails 的数据库是否是新的)
7. 回滚
回滚,就是通过一条命令 rake db:rollback 来执行对应的 migration 中的 down 方法
$ bundle exec rake db:rollback
然后刷新数据库后台就会发现表没了, tables 只剩下了一个 schema_migrations
再运行 bundle exec rake db:migration 数据库里面 users 这个表就会又出现了
登录
请登录后再发表评论。
评论列表:
目前还没有人发表评论