FC2ブログ

徒然さめざめ

思ったことを思ったときに思ったように

migrate ファイルのこと

カテゴリって複数選択できないのね。

migrate ファイルのこと。

migration の string型で作られるテキスト型は
mysqlなら varchar(255)(文字数?) だ。

しかし、mysql5.0 ならvarcharは実質65535byteまで入る。

そこで、t.string hoge, :limit => 65535
とか指定して作ると、型は mediumtext となった。

ちなみに、SQLで直接型を変更しても同様の変化が起こった。


$ cat db/migrate/20090204090052_create_foos.rb
class CreateFoos < ActiveRecord::Migration
def self.up
create_table :foos do |t|
t.string :name

t.timestamps
end
end

def self.down
drop_table :foos
end
end

$ mysql -u root db_test -e "desc foos"
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+

$ head db/migrate/20090204090052_create_foos.rb
class CreateFoos < ActiveRecord::Migration
def self.up
create_table :foos do |t|
t.string :name, :limit => 65535

t.timestamps
end
end

def self.down

$ mysql -u root db_test -e "desc foos"
+------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | mediumtext | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+------------+------------+------+-----+---------+----------------+

上記の状態から。

$ mysql -u root db_test -e "ALTER TABLE foos CHANGE name name varchar(255)"
$ mysql -u root db_test -e "desc foos"
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+

$ mysql -u root db_test -e "ALTER TABLE foos CHANGE name name varchar(65535)"
$ mysql -u root db_test -e "desc foos"
+------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | mediumtext | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+------------+------------+------+-----+---------+----------------+

まー、何かする際にはご注意を。
スポンサーサイト



コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://fmkt.blog65.fc2.com/tb.php/36-61dee6b1
この記事にトラックバックする(FC2ブログユーザー)