2011-12-26 3 views
0

Я развертываю приложение rails на общем хосте, используя mysql. Однако во время разработки я использую базу данных sqlite. Мои запросы должны работать в обеих средах. Я ранее спросил о запросе с помощью CONCAT, что бы работать на обеих базах данных: Can MySQL concatenate strings with ||Настройка sql_mode с Rails

мне сказали, что я должен установить sql_mode в PIPES_AS_CONCAT или ANSI. Теперь у меня вопрос, где и как я должен установить sql_mode в моем приложении. Может ли это быть инициализатором, чтобы не менять общий код?

Я попытался использовать фрагмент кода отсюда: http://gabrito.com/post/configuring-mysql-sql-mode-in-ruby-on-rails, но это не сработало - я предполагаю, что метод подключения с тех пор был изменен, поскольку этот пост довольно старый.

Любая помощь очень ценится. Кстати, я использую рельсы 3.1.3.

ответ

1

Главное отличие, вероятно, в том, что вы, вероятно, используете адаптер mysql2 - попробуйте переписать этот метод на ActiveRecord::ConnectionAdapters::Mysql2Adapter.

Лично я считаю, что использование разных баз данных в разработке и производстве требует неприятностей (если, возможно, вы не пишете что-то, предназначенное для работы во многих разных базах данных). Различия между базами данных могут быть незначительными, например, sqlite3 имеет довольно гибкий вид, когда дело доходит до типов столбцов - вы можете с радостью вставить> 255 символов в столбце, объявленном как VARCHAR(255), тогда как mysql будет обрезать данные.

+0

Да, это правда, я тоже решил использовать mysql в разработке. Поэтому я использую concat вместо труб. Я попробую изменить имя класса в Mysql2Adapter в ближайшее время, и пометьте ваш ответ правильно, если он работает :) –

Смежные вопросы