日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

db:migrate

發(fā)布時間:2024/4/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 db:migrate 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
首先,確保你已經(jīng)配置好了database.yml,假設(shè)我們要創(chuàng)建一個名為person的model,現(xiàn)在我們可以通過db:migrate任務(wù)來避免直接使用SQL來操作數(shù)據(jù)庫:

rails g?model person name:string age:int

這條命令將在你的db/migrate目錄下創(chuàng)建001_create_people.rb文件,我們可以通過它來創(chuàng)建people(people是person的復(fù)數(shù))表:

$ rake db:migrate
== CreatePeople: migrating ===================
-- create_table(:people)
-> 0.1900s
== CreatePeople: migrated (0.1900s) ==========

現(xiàn)在,你會發(fā)現(xiàn)你的數(shù)據(jù)庫中已經(jīng)多了一個people表,它包含3個字段:id,name,age,如果你不需要那個自動創(chuàng)建的id字段,那么你可以修改001_create_people.rb,在create_table :people后面加上:id => false即可。

如果隨后你發(fā)現(xiàn)你需要再增加一個學(xué)位字段,也很簡單:

$?rails g?migration add_degree_to_people
== AddDegreeToPeople: migrating ============
-- add_column(:people, :degree, :string)
-> 0.3400s
== AddDegreeToPeople: migrated (0.4100s) ===

這將在db/migrate目錄下創(chuàng)建002_add_degree_to_people.rb文件,對它進行編輯:

class AddDegreeToPeople < ActiveRecord::Migration
def self.up
add_column :people, :degree, :string
end
def self.down
remove_column :people, :degree
end
end

然后再次執(zhí)行rake db:migrate,現(xiàn)在你會發(fā)現(xiàn)people表已經(jīng)多了一個degree字段。

事實上除了add_column,我們還可以對數(shù)據(jù)庫進行更多的操作:

create_table(name, options),創(chuàng)建表
drop_table(name),刪除表
rename_table(old_name, new_name),重命名表
add_column(table_name, column_name, type, options),添加列
rename_column(table_name, column_name, new_column_name),重命名列
change_column(table_name, column_name, type, options),改變列屬性
remove_column(table_name, column_name),刪除列
add_index(table_name, column_name, index_type),創(chuàng)建索引
remove_index(table_name, column_name),刪除索引
唯一需要注意的就是:必須在down方法中撤銷up方法對數(shù)據(jù)庫所作的一切更改,以保證我們所有的遷移都是可逆的。

比如,假設(shè)我們現(xiàn)在想從people中去除degree字段,那我們只需要執(zhí)行下面這條語句就可以了:

$ rake db:migrate version=1

如果我們連people表也不需要了,那就執(zhí)行:

$ rake db:migrate version=0

另外,除了db:migrate,還有兩個比較有用的操作數(shù)據(jù)庫的rake任務(wù):

rake db:schema:dump,這將在db目錄下創(chuàng)建一個schema文件,你可以通過復(fù)制它的內(nèi)容來為數(shù)據(jù)庫中現(xiàn)有的表創(chuàng)建migration文件(如果你的應(yīng)用不是一開始就使用db:migrate的話)
rake db:structure:dump,這將在db目錄下創(chuàng)建一個structure文件,它包含創(chuàng)建當(dāng)前數(shù)據(jù)庫結(jié)構(gòu)所需的SQL語句。

?

轉(zhuǎn)載于:https://www.cnblogs.com/viaivi/archive/2010/06/22/1762894.html

總結(jié)

以上是生活随笔為你收集整理的db:migrate的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。