«Поле« имя »не имеет значения по умолчанию», когда явно указывается «имя» - PullRequest
0 голосов
/ 05 февраля 2020

У меня очень странная ошибка. Еще одна странная вещь заключается в том, что это происходит только на хосте разработки, но не локально, несмотря на то, что оба работают с одинаковым кодом. Разница лишь в том, в какую базу данных они пишут, но я могу просто вставить в консоль mysql.

Если я попытаюсь выполнить следующий запрос в консоли Rails:

Category.create!(:name => "FOOBAR", :parent_id => 141)

Я получаю эту ошибку:

ActiveRecord::StatementInvalid: Mysql2::Error: Field 'name' doesn't have a default value: 
INSERT INTO `taxons` (`type`, `parent_id`, `created_at`, `updated_at`) VALUES ('Category', 
141, '2020-02-05 18:48:54', '2020-02-05 18:48:54')

Я буквально предоставляю значение имени, поэтому я не понимаю, почему он не использует его, когда пытается создать и проверить новая запись.

ETA: Это определенно проблема с базой данных, потому что, если я запускаю локальный код с базой данных разработки, я получаю ту же ошибку. Я не могу напрямую вносить изменения в базу данных (то есть я должен попросить команду разработчиков сделать это), но я думаю, что реальный вопрос в том, что нужно изменить там, чтобы это работало? Разница между двумя базами данных заключается в том, что локально она позволяет name иметь DEFAULT NULL, а при разработке - NOT NULL, но зачем это нужно, если я всегда предоставляю значение для name

1 Ответ

0 голосов
/ 05 февраля 2020

Я отредактировал database.yml, чтобы указать strict: false. Проблема решена.

...