5

I really can't seem to find an accurate explanation on why you should use the same database in development as in production. I personally love using sqlite3 in development (it's light, easy to use, and has a sweet sqlite browser GUI tool), then use postgres in production with heroku. But, I keep hearing whether from RBates or Michael Hartl or someone else that you should use the same database in both, why exactly is this?

8
  • 2
    For starters: try the following on SQLite and Postgres: create table foo (foo_date date); insert into foo values ('2015-02-31'), ('XXX'); select * from foo; Commented Apr 20, 2015 at 9:13
  • ok, so your saying there is alot more you can do with it in dev mode? Commented Apr 20, 2015 at 9:15
  • 4
    SQLite is quite limited compared to Postgres. The inability to validate a date value is just one. If your application for one reasons sends an invalid date to the database all your tests would pass but it will fail miserably on production. There are many more things like that. In a nutshell: testing on a different DBMS than you use in production is futile because you still don't know if your application will work in production. Commented Apr 20, 2015 at 9:20
  • great, thanks for your input horsey. Commented Apr 20, 2015 at 9:26
  • To be a bit pedantic, your question should be titled "Why use the same DBMS for development and production?". Postgres, Mysql, Sqlite etc are all different database management systems, or DBMSs for short. Within an install of any of them you might have several different databases. Your question sounds like you are asking about using the same actual database (ie the same actual data) in development mode as production. Commented Apr 20, 2015 at 9:37

1 Answer 1

7

I have used SQLite3 in development and PostgreSQL in production for my first few Rails projects. Just today I switched my current project's development environment over to PostgreSQL.

When I first deployed my app to Heroku, I spent two days correcting errors caused by database migrations. The migrations worked fine in SQLite3 but broke in PostgreSQL. If I had used one DB, I would have avoided this time debugging.

This morning I was trying to use some SQL queries. If you are only using rails queries, you can get away with switching DBs. When you start writing SQL, you begin to see the problems. Check out my question and the solution here: Ruby strftime '%-m' not working in query

If I had ever gotten my original SQL queries to work using strftime, they would have broke in production.

Save yourself the future headache by creating matching development and production environments.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.