Rails 3.1 в рабочем режиме сохраняет модель в базе данных, но возвращает нулевой идентификатор - PullRequest
3 голосов
/ 23 ноября 2011

Hello!Это происходит очень странно, когда я сохраняю модель в рельсах 3.1

Тот же проект в разработке / производстве

Существует простая модель City с 2 полями (имя / штат).

консоль разработки

city = City.new(:name => "Sao Paulo", :uf => "SP")
city.save (true, no validations errors and record is created in database)

если я позвоню «city.id», я получу реальное значение идентификатора, сохраненного в базе данных, например, 123.Он отлично работает в разработке.

рабочая консоль

city = City.new(:name => "Sao Paulo", :uf => "SP")
city.save (true, no validations errors and record is created in database)

если я вызываю city.id, я получаю значение, равное 0 (отличается от значения, автоматически созданного в базе данных)

City.last (check if record is created in database...)
<City id: 22257, name: "Sao Paulo", uf: "SP", created_at: "2011-11-23 00:52:53", updated_at: "2011-11-23 00:52:53">

Запись создается в базе данных, но не возвращаетИдентификатор после вызова сохранить / создать.Кто-нибудь видел это раньше?Это первый раз, когда я вижу такое поведение в производстве.Это происходит с каждой моделью в проекте.Я использовал модель City, потому что она самая простая.Я бегу по рельсам 3.1.

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

Я нашел решение !!!Я использовал «mysql», инсталированный «mysql2».Когда я перешел на mysql2 (в адаптере Gemfile и database.yml), все работало нормально.Вероятно, это проблема несовместимости между gem 'mysql' и rails 3.1.Спасибо всем за помощь!

1 голос
/ 23 ноября 2011

city.id = 0 не будет ничего делать с вашей базой данных, он только изменит ваш экземпляр City, чтобы фактически записать его в вашу базу данных, вы должны использовать .save в своем экземпляре после изменения его атрибутов.

Кроме того, ручная установка значения уникального столбца sql с автоинкрементом выглядит так, будто вы просите о случившемся.

Кроме того, я думаю, что идентификаторы начинаются с 1, а не с 0, попытка установить его в 0, вероятно, не будет принята MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...