Fix timestamp column problems with some MySQL versions and some SQL modes

[MAILPOET-4788]
This commit is contained in:
Jan Jakes
2022-11-11 15:30:23 +03:00
committed by David Remer
parent 725e0ecb00
commit c748b80447
2 changed files with 15 additions and 6 deletions

View File

@ -16,8 +16,8 @@ class Migration_20221110_151621 extends Migration {
name varchar(255) NOT NULL, name varchar(255) NOT NULL,
author bigint NOT NULL, author bigint NOT NULL,
status varchar(255) NOT NULL, status varchar(255) NOT NULL,
created_at timestamp NOT NULL, created_at timestamp NULL, -- must be NULL, see comment at the top
updated_at timestamp NOT NULL, updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
activated_at timestamp NULL, activated_at timestamp NULL,
deleted_at timestamp NULL, deleted_at timestamp NULL,
PRIMARY KEY (id) PRIMARY KEY (id)
@ -29,8 +29,8 @@ class Migration_20221110_151621 extends Migration {
id int(11) unsigned NOT NULL AUTO_INCREMENT, id int(11) unsigned NOT NULL AUTO_INCREMENT,
automation_id int(11) unsigned NOT NULL, automation_id int(11) unsigned NOT NULL,
steps longtext, steps longtext,
created_at timestamp NOT NULL, created_at timestamp NULL, -- must be NULL, see comment at the top
updated_at timestamp NOT NULL, updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id), PRIMARY KEY (id),
INDEX (automation_id) INDEX (automation_id)
) {$charsetCollate}; ) {$charsetCollate};
@ -51,8 +51,8 @@ class Migration_20221110_151621 extends Migration {
version_id int(11) unsigned NOT NULL, version_id int(11) unsigned NOT NULL,
trigger_key varchar(255) NOT NULL, trigger_key varchar(255) NOT NULL,
status varchar(255) NOT NULL, status varchar(255) NOT NULL,
created_at timestamp NOT NULL, created_at timestamp NULL, -- must be NULL, see comment at the top
updated_at timestamp NOT NULL, updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
subjects longtext, subjects longtext,
next_step_id varchar(255), next_step_id varchar(255),
PRIMARY KEY (id), PRIMARY KEY (id),

View File

@ -16,6 +16,15 @@ use MailPoet\Settings\SettingsRepository;
use MailPoet\Subscription\Captcha; use MailPoet\Subscription\Captcha;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
/**
* The "created_at" column must be NULL in some tables to avoid "there can be only one
* TIMESTAMP column with CURRENT_TIMESTAMP" error on MySQL version < 5.6.5 that occurs
* even when other timestamp is simply "NOT NULL".
*
* Additionally, having multiple timestamp columns with "NOT NULL" seems to produce the
* following error in some SQL modes:
* SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'updated_at'"
*/
class SetupTest extends \MailPoetTest { class SetupTest extends \MailPoetTest {
public function _before() { public function _before() {
parent::_before(); parent::_before();