У меня проблема с разделением таблицы в MySQL.Я хочу, чтобы таблица разделов reminders
зависела от квартала года, потому что я думаю, что я могу удалить список напоминаний, срок действия которого истек позже.
Может быть, я должен добавить поле в primary key
или unique key
для работы с разделами,Пожалуйста, помогите мне эту проблему.
CREATE TABLE `reminders`
(
`id` bigint(20) NOT NULL,
`mer_reminder_id` varchar(255) UNIQUE NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NULL DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
`type` varchar(32) DEFAULT NULL,
`priority` int(11) DEFAULT NULL,
`due` timestamp NULL DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
`description` varchar(255) DEFAULT NULL,
`template` varchar(32) DEFAULT NULL,
`action_id` bigint(20) NOT NULL,
`merchant_id` bigint(20) NOT NULL,
`expired` bool NULL DEFAULT NULL,
PRIMARY KEY (`id`, `created_at`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
PARTITION BY RANGE ( UNIX_TIMESTAMP(created_at) ) (
PARTITION zpm_reminder_reminders_q1_2019 VALUES LESS THAN ( UNIX_TIMESTAMP('2019-04-01 00:00:00') ),
PARTITION zpm_reminder_reminders_q2_2019 VALUES LESS THAN ( UNIX_TIMESTAMP('2019-07-01 00:00:00') ),
PARTITION zpm_reminder_reminders_q3_2019 VALUES LESS THAN ( UNIX_TIMESTAMP('2019-10-01 00:00:00') ),
PARTITION zpm_reminder_reminders_q4_2019 VALUES LESS THAN ( UNIX_TIMESTAMP('2020-01-01 00:00:00') ),
PARTITION zpm_reminder_reminders_q1_2020 VALUES LESS THAN ( UNIX_TIMESTAMP('2020-04-01 00:00:00') ),
PARTITION zpm_reminder_reminders_q2_2020 VALUES LESS THAN ( UNIX_TIMESTAMP('2020-07-01 00:00:00') ),
PARTITION zpm_reminder_reminders_q3_2020 VALUES LESS THAN ( UNIX_TIMESTAMP('2020-10-01 00:00:00') ),
PARTITION zpm_reminder_reminders_q4_2020 VALUES LESS THAN ( UNIX_TIMESTAMP('2021-01-01 00:00:00') )
);
Проблема: #1503 - A UNIQUE INDEX must include all columns in the table's partitioning function