Для неизбежной бедной души, которая также должна обойти эту проблему ...
Проблема в том, что JDBC (именно это переносит DataObjects) настраивает переменную MySQL sql_mode
и устанавливает ее на TRADITIONAL
, который добавляет это поведение в MySQL.Вам просто нужно отменить это в любом месте вашего приложения, прежде чем использовать DataMapper (нужно сделать только один раз).
repository(:default).adapter.execute("SET sql_mode = ''")
Так как sql_mode
может быть списком режимов, разделенных запятыми, в идеале вы, вероятно, захотитесделайте что-нибудь умнее, чтобы просто убрать TRADITIONAL
из списка, но приведенное выше решение является быстрым и грязным.
ОБНОВЛЕНИЕ: это вызывает не только ТРАДИЦИОННЫЙ флаг.Это TRADITIONAL, STRICT_ALL_TABLES и STRICT_TRANS_TABLES.Я проверил, что JDBC настроил и устранил проблемные режимы методом проб и ошибок.Результирующий список, который не создает поведение WARNING = ERROR:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,ANSI,NO_BACKSLASH_ESCAPES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION