I'm not convinced the NOT NULL condition set in the MySQL table is the cause of the error you are getting.
I use the same SQL you are using and when I insert a record, MySQL simply enters an empty string (Equivalent to '') rather than NULL and this works fine for me and other users.
The NOT NULL setting is just a personal preference, if you want to allow NULL, then give it a go and see whether it solves your problem as I don't think it should affect the functionality of the library.
Additionally, you could try defining MySQL to enter an empty string for the column.
Code:
ALTER TABLE `user_accounts`
MODIFY COLUMN `uacc_forgotten_password_token` varchar(40) NOT NULL DEFAULT '' AFTER `uacc_activation_token`;
Note: That sql requires the default database to be setup with no columns moved or renamed.
If one of these methods do work, then maybe its conflict with the MySQL version you are using - do you know what version you're on?