Fix timestamp column problems with some MySQL versions and some SQL modes
[MAILPOET-4788]
This commit is contained in:
@ -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),
|
||||||
|
@ -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();
|
||||||
|
Reference in New Issue
Block a user