这可能是一个功能而不是bug,所以我想把它包含在SO而不是MariaDB的Jira上。
昨天我将Homebrew上的MariaDB安装从10.1.23更新到10.2.6。我的所有选择仍然正常,但现在在我的遗留应用程序中,我在插入时得到一堆错误,其中代码是“假设”MariaDB将设置默认值。例如......
INSERT INTO table SET
email = 'some@email.com', -- varchar
phone_number = '', -- bigint
ts = '2017-05-30 23:51:23', -- datetime
some_val = '689728' -- varchar
此代码之前工作正常,但自从我升级后,我现在得到以下几个错误......
错误1(is_some_toggle是一个tinyint,在上面的查询中没有定义,假设MariaDB只插入一个0)
Field 'is_some_toggle' doesn't have a default value
错误2(在我将默认值设置为is_some_toggle之后)
Incorrect integer value: '' for column 'phone_number' at row 1
我猜这是一个功能,而不是一个bug。我已经通过他们的changelogs查看了10.2系列,我没有看到任何跳出来,但有很多,所以我可能错过了它。我看到了OLD_SQL的服务器配置,但这似乎不是我想要的。有什么想法吗?
macOS Sierra 10.12.5 btw
CREATE TABLE `table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(200) NOT NULL,
`phone_number` bigint(20) NOT NULL,
`some_val` varchar(6) NOT NULL,
`ts` datetime DEFAULT NULL,
`is_some_toggle` tinyint(1) NOT NULL,
PRIMARY KEY (`id`),
KEY `email_code` (`email`(15),`some_val`),
KEY `phone_number_code` (`phone_number`,`some_val`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
答案 0 :(得分:1)
看起来像浏览更改日志非常慢慢地为我工作。
sql_mode已根据this article中的概述进行了更新。
Option | Old default value | New default value
sql_mode | NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION | STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
我把它改回了默认值,我很高兴。