ruby on rails et oracle : les commandes rake #1
Par Renaud Gaudin le jeudi 31 mai 2007, 23:44 - RoR - Lien permanent
C:\apc_demo\InstantRails1.7\InstantRails\rails_apps\rooracle>rake db:schema:dump
crée dans le sous-répertoire db un fichier schema.rb avec le "DDL" de la table :
# This file is autogenerated. Instead of editing this file, please use the # migrations feature of ActiveRecord to incrementally modify your database, and # then regenerate this schema definition.
ActiveRecord::Schema.define() do
create_table "books", :force => true do |t| t.column "title", :string, :limit => 4000 t.column "text", :string, :limit => 4000 end
end
C:\apc_demo\InstantRails1.7\InstantRails\rails_apps\rooracle>rake db:schema:dump
(in C:/apc_demo/InstantRails1.7/InstantRails/rails_apps/rooracle) C:\apc_demo\InstantRails1.7\InstantRails\rails_apps\rooracle>dir db Le volume dans le lecteur C s'appelle FFM74F4 Le numéro de série du volume est 2155-1AD5
Répertoire de C:\apc_demo\InstantRails1.7\InstantRails\rails_apps\rooracle\db
30/05/2007 22:49 <REP> .
30/05/2007 22:49 <REP> ..
31/05/2007 21:16 393 schema.rb
1 fichier(s) 393 octets
2 Rép(s) 2 071 068 672 octets libres
pendant ce temps sur la console :
Processing BooksController#index (for 127.0.0.1 at 2007-05-31 21:09:23) GET Session ID: 8bcddc0a55bbf3e80e79525b7240a697 Parameters: {"action"=>"index", "controller"=>"books"} ?[4;36;1mBook Columns (0.328000)?[0m ?[0;1m select column_name as name, data_type as sql_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;35;1mSQL (0.078000)?[0m ?[0mSELECT count(*) AS count_all FROM books ?[0m
?[4;36;1mBook Load (0.141000)?[0m ?[0;1mselect * from (select raw_sql_.*, rownum raw_rnum_ from (SELECT * FROM books ) raw_sql_ where rownum <= 10) where raw_rnum_ > 0?[0m Rendering actionlistlayoutfalse within layouts/books Rendering books/list Completed in 2.60900 (0 reqs/sec) | Rendering: 0.04600 (1%) | DB: 0.54700 (20%) | 200 OK http://localhost/books ?[4;36;1mSQL (0.000000)?[0m ?[0;1mOCIError: ORA-00942: Table ou vue inexistante: SELECT * FROM schema_info?[0m ?[4;35;1mSQL (1.000000)?[0m ?[0mselect lower(table_name) from user_tables?[0m ?[4;36;1mSQL (0.000000)?[0m ?[0;1m select column_name as name, data_type as sql_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;35;1mPrimary Key (1.266000)?[0m ?[0m 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;36;1mSQL (1.656000)?[0m ?[0;1m 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
Commentaires
Bonjour,
J'essaie de faire tourner un exemple de Documatic (extension de Ruby Report pour la génération de documents OpenOffice), mais lors du db:migrate, j'obtiens le message d'erreur suivant :
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
rake aborted!
OCIError: ORA-00942: Table ou vue inexistante: SELECT version FROM schema_info
J'ai vu que vous aviez le même dans l'article ci-dessus. Savez-vous de quoi il s'agit ? L'exemple était prévu au départ pour tourner avec une base SQLite3 ; j'ai donc modifié database.yml et créé un schéma spécifique à l'application.
Merci de votre aide,
Christophe.