Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get SQLite error using heroku db:push when I'm using PostgreSQL as development db

I was having problems pushing data from my development db to Heroku. I decided to switch to PostgreSQL as my development db and have updated database.yml and removed the sqlite gem from the gemfiles.

The app runs fine against PostgreSQL but when I try to run the command:

heroku db:push

I get an SQLite error which is puzzling because there is no reference to sqlite in my project:

 !    Taps Load Error: cannot load such file -- sqlite3
 !    You may need to install or update the taps gem to use db commands.
 !    On most systems this will be:
 !    
 !    sudo gem install taps

Here is my database.yml file:

development:
  adapter: postgresql
  encoding: unicode
  database: xxxx
  pool: 5
  timeout: 5000
  username: xxxx
  password: xxxx

test:
  adapter: postgresql
  encoding: unicode
  database: test
  pool: 5
  timeout: 5000
  username: xx
  password: xx

production:
  adapter: postgresql
  encoding: unicode
  database: test
  pool: 5
  timeout: 5000

I'm using RVM and I have created a new gemset without any luck.

I even tried this but got the same SQLite error:

heroku db:push postgres://xx:xx@localhost/xx

 !    Taps Load Error: cannot load such file -- sqlite3
 !    You may need to install or update the taps gem to use db commands.
 !    On most systems this will be:
 !    
 !    sudo gem install taps

I have also run bundle install and bundle update.

Johann

like image 276
gugguson Avatar asked Mar 04 '12 19:03

gugguson


2 Answers

I was having the same problem and solved it by moving taps into a development group in my gemfile- taps requires sqlite, which is what was causing the problem.

group :development do
  gem 'taps', :require => false # has an sqlite dependency, which heroku hates
end
like image 143
tekniklr Avatar answered Oct 06 '22 01:10

tekniklr


The solution is to add not only taps gem but also sqlite3 gem into the :development group. If you are using in your development sqlite3 already, then just adding taps gem will be enough. But I am using mysql on my development so to solve that problem I had to add both.

group :development do
  gem 'taps'
  gem 'sqlite3'
end
like image 45
JjP Avatar answered Oct 05 '22 23:10

JjP