Eu tenho um aplicativo de trilhos que os bancos de dados estão no SQLite (o desenvolvedor e a produção). Como estou migrando para o heroku, quero converter meu banco de dados em PostgreSQL.
De qualquer forma, ouvi dizer que o banco de dados local de desenvolvimento não precisa ser alterado do SQLite; portanto, não preciso alterar isso; no entanto, como faço para alterar o ambiente de produção do SQLite para o PostgreSQL?
Alguém já fez isso antes e pode ajudar?
PS Não sei ao certo como exatamente esse processo é chamado, mas ouvi falar sobre a migração do banco de dados do SQLite para o PostgreSQL. É isso que precisa ser feito?
ruby-on-rails
database
sqlite
postgresql
heroku
Vasseurth
fonte
fonte
Respostas:
Você pode alterar seu database.yml para isso em vez de usar o sqlite pronto para uso:
fonte
Os passos abaixo funcionaram para mim. Ele usa a gema torneiras , criada por Heroku e mencionada no Railscast # 342 de Ryan Bates. Existem algumas etapas, mas funcionou perfeitamente (até as datas foram migradas corretamente) e foi muito mais fácil do que as migrações Oracle -> DB2 ou SQL Server -> Oracle que fiz no passado.
Observe que o SQLite não possui um ID de usuário ou senha, mas a gema torneiras exige algo. Eu apenas usei os literais "usuário" e "senha".
Crie o usuário do banco de dados Postgres para os novos bancos de dados
EDIT - comando atualizado abaixo - use isso em vez
Crie os bancos de dados necessários
Atualize o Gemfile
Atualizar database.yml
Inicie o servidor taps no banco de dados sqlite
Migrar os dados
Reinicie o servidor da web Rails
Limpeza do Gemfile
fonte
Como você está migrando para o heroku, pode usar toques para fazer isso:
Isso enviará os dados sqlite de desenvolvimento local para produção, e o heroku converterá automaticamente para postgres para você.
Isso também deve funcionar para enviar um db sqlite de produção para o heroku, mas não foi testado.
fonte
você também precisará adicionar a linha " gem 'pg' " ao seu arquivo de gem, 'pg' sendo a gem atual do postgres para o Rails.
fonte
Simplesmente atualize o arquivo config / database.yml:
O acima é o que é gerado quando você executa:
Adicione isso também ao seu Gemfile:
fonte
Agora ficou fácil com o único comando
fonte
Depois de substituir gema
'sqlite3
por gemapg
no arquivo de gemas, eu continuei recebendo osqlite3 error
push ao mestre Heroku porque esqueci de confirmar o arquivo de gemas atualizado. Basta fazer o seguinte:fonte
Basta atualizar seu datatbase.yml
Estamos usando trilhos e os padrões básicos devem ser seguidos como DRY, Convenção sobre Configuração, etc. Assim, no código acima, não repetimos o mesmo código repetidamente.
fonte
Isso foi mencionado acima de mim, mas não tenho reputação suficiente como espreitador para poder votá-lo. Na esperança de chamar um pouco mais de atenção para os novatos do Rails, leia esta resposta:
^^^ Essa é uma peça fundamental, além do arquivo database.yml descrito na resposta selecionada para migrar seu aplicativo Rails para o Postgres.
fonte
É assim que eu tenho a minha configuração. Se você estiver usando apenas ressonância magnética e não Jruby, poderá pular a lógica nas configurações do adaptador.
fonte
Você pode tentar o seguinte:
sqlite3 development.db .dump | psql dbname username
ou tente com sqlitetopgscript: http://trac-hacks.org/browser/sqlitetopgscript/0.10/sqlite2pg
fonte
Uma solução possível (não para o heroku) é usar o yaml.db em:
http://www.railslodge.com/plugins/830-yaml-db
fonte
Hoje eu tive o mesmo problema. Estou trabalhando no Rails 4.2.8. A solução foi especificar a versão pg gem, no meu caso
0.18.4
,.fonte