Поддержка схемы в нескольких базах данных не будет большой проблемой.Ваша проблема будет в других областях:
- MySQL и SQLite довольно слабы с их преобразованиями типов, PostgreSQL строг.
- MySQL часто молча обрезает строки, тогда как PostgreSQL будет жаловаться.
- MySQL и SQLite позволят вам иметь в вашем SELECT вещи, которых нет в GROUP BY, но PostgreSQL будет жаловаться.
- Логические значения обрабатываются по-разному во всех трех:
- PostgreSQL использует литералы
't'
и 'f'
(и несколько других) для логических значений. - MySQL использует 1 и 0.
- SQLite использует 1 и 0, но ActiveRecord использует
't'
и 'f'
в любом случае, но это работает, потому что SQLite рассматривает все как строку.
Это некоторые из проблем, которые возникают у меня в голове, но есть и другие.Ни один ORM не может защитить вас от различий и недоразумений в базе данных.
Потратьте некоторое время на поиск таких вещей, как «все работало нормально, пока я не развернул его в Heroku», или даже просто тегов «[heroku] [postgresql]» и вы »Вы найдете множество примеров людей, которые столкнулись с проблемами при разработке поверх MySQL или SQLite, но при развертывании в PostgreSQL.
Краткий ответ: не делайте этого, разрабатывайте поверх PostgreSQL, если вы планируетеразвернуть на PostgreSQL.И используйте ту же версию.