notes :

ruby script\generate migration ma_migration crée ma_migration dans le ss rep migrate

on peut y coller le code qui est dans schema.rb (voir le #1), c'est un bon début

Migrer la base de données

rake migrate est déprécié --> rake db:migrate

la table est recrée (ah oui, sans les données oui.)

exemple 2 : C:\apc_demo\InstantRails1.7\InstantRails\rails_apps\rooracle>ruby script\generat e migration NewCol13June2007

     exists  db/migrate
     create  db/migrate/002_new_col13_june2007.rb

dans le fichier on ajoute une colonne : rajout de la ligne t.column "comments", :string, :limit => 4000 aux lignes de création de la table copiées/collées de schema.rb vers migrate/002_new_col13_june2007.rb

ensuite rake db:migrate

C:\apc_demo\InstantRails1.7\InstantRails\rails_apps\rooracle>rake db:migrate (in C:/apc_demo/InstantRails1.7/InstantRails/rails_apps/rooracle) == NewCol13June2007: migrating ================================================ -- create_table("books", {:force=>true})

  -> 1.8600s

== NewCol13June2007: migrated (1.8750s) =======================================
la console dit :

 ←[4;36;1mSQL (0.000000)←[0m   ←[0;1mOCIError: ORA-00955: ce nom d'objet existe
déjà: CREATE TABLE schema_info (version NUMBER(38))←[0m
 ←[4;35;1mSQL (0.000000)←[0m   ←[0mOCIError: ORA-00955: ce nom d'objet existe d

éjà: CREATE TABLE schema_info (version NUMBER(38))←[0m

 ←[4;36;1mSQL (0.000000)←[0m   ←[0;1mSELECT version FROM schema_info←[0m
 ←[4;35;1mSQL (0.000000)←[0m   ←[0mSELECT version FROM schema_info←[0m

Migrating to NewCol13June2007 (2)

 ←[4;36;1mSQL (1.281000)←[0m   ←[0;1mDROP TABLE books←[0m
 ←[4;35;1mSQL (0.344000)←[0m   ←[0mDROP SEQUENCE books_seq←[0m
 ←[4;36;1mSQL (0.172000)←[0m   ←[0;1mCREATE TABLE books (id NUMBER(38) NOT NULL
PRIMARY KEY, title VARCHAR2(4000) DEFAULT NULL, text VARCHAR2(4000) DEFAULT NUL

L, comments VARCHAR2(4000) DEFAULT NULL) ←[0m

 ←[4;35;1mSQL (0.032000)←[0m   ←[0mCREATE SEQUENCE books_seq START WITH 10000←[

0m

 ←[4;36;1mSQL (0.000000)←[0m   ←[0;1mUPDATE schema_info SET version = 2←[0m
 ←[4;35;1mSQL (0.000000)←[0m   ←[0mSELECT * FROM schema_info←[0m
 ←[4;36;1mSQL (0.078000)←[0m   ←[0;1mselect lower(table_name) from user_tables←

[0m

 ←[4;35;1mSQL (0.015000)←[0m   ←[0m select column_name as name, data_type as sq

l_type, data_default, nullable,

decode(data_type, 'NUMBER', data_precision,
'FLOAT', data_precision,
'VARCHAR2', data_length,
null) as limit,
decode(data_type, 'NUMBER', data_scale, null) as scale
from all_tab_columns
where owner = 'ROOR'
and table_name = 'BOOKS'
order by column_id

←[0m

 ←[4;36;1mPrimary Key (0.219000)←[0m   ←[0;1m select cc.column_name
from all_constraints c, all_cons_columns cc
where c.owner = 'ROOR'
and c.table_name = 'BOOKS'
and c.constraint_type = 'P'
and cc.owner = c.owner
and cc.constraint_name = c.constraint_name

←[0m

 ←[4;35;1mSQL (0.547000)←[0m   ←[0m SELECT lower(i.index_name) as index_name, i

.uniqueness, lower(c.column_name) as column_name

FROM user_indexes i, user_ind_columns c
WHERE i.table_name = 'BOOKS'
AND c.index_name = i.index_name
AND i.index_name NOT IN (SELECT uc.index_name FROM user_constraints uc WHERE uc

.constraint_type = 'P')

ORDER BY i.index_name, c.column_position

←[0m

maintenant on a une nouvelle colonne (et plus de lignes!)