For anyone encountering the "Field 'xxx' doesn't have a default value" when running insert/update/replace statement on MariaDB, I found that this is actually caused by the sql mode STRICT_TRANS_TABLES.  This also fixes when a trigger updates the default value of the field.   I believe the default options for MariaDB windows installer cause this option to be enabled, whereas I had previous never designed my application for the various modes supported.  

You can also fix the issue by giving every field in the table an explicit default value of 0 or '' except for text/longtext columns.  I choose not to do that since I don't know how many other things change with STRICT_TRANS_TABLES.

If you change my.ini / my.cnf to sql-mode="", you won't have this error occur anymore.  You can run SELECT @@GLOBAL.sql_mode; on your mysql server and mariadb server to compare what the current settings are.

This is my first post to the MariaDB mailing list.  Sorry if I did it wrong.  I've been using MySQL for over 10 years and decided to migrate to MariaDB now.

--
Bruce Kirkpatrick

386-405-4643