Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql,分区不适用于日期范围_Mysql_Mariadb - Fatal编程技术网

Mysql,分区不适用于日期范围

Mysql,分区不适用于日期范围,mysql,mariadb,Mysql,Mariadb,我试图对一个表进行分区,这是它的结构: CREATE TABLE IF NOT EXISTS `actions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uuid` varchar(36) COLLATE utf8_unicode_ci DEFAULT NULL, `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `username` varchar(16) COLLATE utf8

我试图对一个表进行分区,这是它的结构:

CREATE TABLE IF NOT EXISTS `actions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uuid` varchar(36) COLLATE utf8_unicode_ci DEFAULT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `username` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
  `event` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
  `obj_id` int(11) unsigned NOT NULL,
  `inline` text COLLATE utf8_unicode_ci NOT NULL,
  `meta` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`,`date`),
  KEY `event` (`event`),
  KEY `obj_id` (`obj_id`),
  KEY `username` (`username`),
  KEY `date` (`date`),
  KEY `user_date` (`username`,`date`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
 PARTITION BY RANGE ( UNIX_TIMESTAMP(date))
(PARTITION actions_0 VALUES LESS THAN (1209592800) ENGINE = InnoDB, # 2008-05-01
 PARTITION actions_images_1 VALUES LESS THAN (1212271200) ENGINE = InnoDB, # 2008-06-01
 [...]
 PARTITION actions_67 VALUES LESS THAN (1388530800) ENGINE = InnoDB,
 PARTITION actions_68 VALUES LESS THAN MAXVALUE ENGINE = InnoDB)
现在,当我选择一个特定的日期时,它似乎很好:

EXPLAIN PARTITIONS SELECT * FROM `actions` WHERE `date` = '2008-05-04 16:13:15' ;

+----+-------------+----------------+------------------
| id | select_type | table          | partitions       
+----+-------------+----------------+------------------
|  1 | SIMPLE      | actions        | actions_1 
但如果我做这个查询:

EXPLAIN PARTITIONS SELECT * FROM `actions` WHERE `date` > '2008-05-04 16:13:15' AND `date` < '2008-05-05 16:13:15';
EXPLAIN分区从'actions'中选择*,其中'date'>'2008-05-0416:13:15'和'date'<'2008-05-0516:13:15';
Mysql扫描所有的操作表,我做错了什么? 这是我第一次使用分区,但我遵循了手册,我找不到哪里出错了

谢谢

这是一个mysql错误 这是一个mysql错误

范围列不支持使用除日期或日期时间以外的日期或时间类型的分区列


日期和日期时间。使用与日期或时间相关的其他数据类型的列不支持作为分区列。

范围列不支持使用日期或时间类型以外的日期或时间类型的分区列

日期和日期时间。使用与日期或时间相关的其他数据类型的列不支持作为分区列