Mam nowa wersje aplikacji, ktorej baza danych nie jest kompatybilna z poprzednia wersja aplikacji. Nowa baza jest mocno rozszerzona. Musze przeniesc dane ze starej struktury do nowej aplikacji dlatego chce przekonwertowac obecna baze do xmla a nastepnie napisac modul migracyjny (nie mylic z railsowymi
migracjami)
pojawił się problem:
Don't know how to build task 'db:data:dump'
Więc dalej szukam jakiejś propozycji
http://www.postgresql.org/docs/current/static/functions-xml.html
Masz to wbudowane w pgsql
table_to_xml, table_to_xmlschema, schema_to_xml, database_to_xml
@Paweł Kondzior: chodzi mi o dump całej bazy danych a nie pojedynczych tabel
@sevos:aplikacja w Rails 2 nie generuje Gemfile, mało się orientuje w strukturze aplikacji Rails 2
Tak wpisałem tam gema i wpisałem rake gems:install i dalej jest problem tzn jak wpisuje rake -T to nie ma tam rake db:data:dump
A rake db:dump
?
też nie ma
ruby script/plugin install git://github.com/adamwiggins/yaml_db.git
rake db:data:dump # Dump contents of Rails database to db/data.yml
rake db:data:load # Load contents of db/data.yml into the database
I musi działać
database_to_xml ?
Po wykonaniu pierwszej linijki nic mi się nie wyświetla na ekranie i odrazu pojawia się znak zachęty w następnej linii
A może lepiej to zrealizować na podstawie migracji, tylko czy migracje pozwalają również kopiować zawartość pól do innych pól?
Migracja może zrobić wszystko, o co ją poprosisz. To tylko kawałek dowolnego kodu, który pilnuje, żeby na danej bazie danych być wykonanym tylko jeden raz (w uproszczeniu).
Przekopiowałem tabele z docelowego projektu do nowej aplikacji, która ma służyć tylko do konwersji danych i przy wywołaniu polecenia rake db:migrate --trace
pojawił się problem[code](in /home/wafcio/convert)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
== CreateRoles: migrating ====================================================
– create_table(:roles)
NOTICE: CREATE TABLE will create implicit sequence “roles_id_seq” for serial column “roles.id”
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index “roles_pkey” for table “roles”
-> 0.0240s
rake aborted!
An error has occurred, this and all later migrations canceled:
uninitialized constant CreateRoles::Role
/home/wafcio/convert/db/migrate/20110425212558_create_roles.rb:9:in up' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:312:in
block in migrate’
/home/wafcio/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/benchmark.rb:294:in measure' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:312:in
migrate’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:395:in migrate' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:537:in
block (2 levels) in migrate’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:611:in call' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:611:in
block in ddl_transaction’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:139:in transaction' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/transactions.rb:204:in
transaction’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:611:in ddl_transaction' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:536:in
block in migrate’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:523:in each' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:523:in
migrate’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:433:in up' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/migration.rb:415:in
migrate’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/activerecord-3.0.3/lib/active_record/railties/databases.rake:142:in block (2 levels) in <top (required)>' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:636:in
call’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:636:in block in execute' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:631:in
each’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:631:in execute' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:597:in
block in invoke_with_call_chain’
/home/wafcio/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/monitor.rb:201:in mon_synchronize' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:590:in
invoke_with_call_chain’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:583:in invoke' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2051:in
invoke_task’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2029:in block (2 levels) in top_level' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2029:in
each’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2029:in block in top_level' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2068:in
standard_exception_handling’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2023:in top_level' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2001:in
block in run’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:2068:in standard_exception_handling' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/lib/rake.rb:1998:in
run’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/gems/rake-0.8.7/bin/rake:31:in <top (required)>' /home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/bin/rake:19:in
load’
/home/wafcio/.rvm/gems/ruby-1.9.2-p136@rails3/bin/rake:19:in `’[/code]
A tabela która chciałem zmigrować wygląda tak
[code=ruby]class CreateRoles < ActiveRecord::Migration
def self.up
create_table :roles do |t|
t.string :name
t.timestamps
end
Role.new do |t|
t.name = "admin"
t.save
end
end
def self.down
drop_table :roles
end
end[/code]
Musisz stworzyć klasę (model) Role. Samo istnienie tabeli to za mało. Model możesz stworzyć albo tak, jak rzecze Prawo (app/models) albo w tej, konkretnej migracji. To drugie rozwiązanie jest lepsze w długo żyjących projektach, gdzie istnieją szanse, że dany model będzie modyfikowany albo nawet zostanie usunięty.
[code=ruby]class CreateRoles < ActiveRecord::Migration
class Role < ActiveRecord::Base
# Samo istnienie klasy może wystarczyć, ale możesz jej
# spokojnie definiować wszystko, czego potrzebujesz
end
def self.up
# … i tak dalej[/code]