У меня очень странная ошибка. Еще одна странная вещь заключается в том, что это происходит только на хосте разработки, но не локально, несмотря на то, что оба работают с одинаковым кодом. Разница лишь в том, в какую базу данных они пишут, но я могу просто вставить в консоль 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