【发布时间】:2012-04-24 09:20:14
【问题描述】:
您好,我想为我的表添加分区。 过去 7 天的多媒体数据表记录 所以我想创建 7 个分区,一个分区 - 一天 所以尝试执行此迁移:
def up
execute "ALTER TABLE multimedia
partition by range (to_days(created_at))
(
PARTITION p0 VALUES LESS THAN (to_days(#{Time.now - (7 * 24 * 60 * 60)})),
PARTITION p1 VALUES LESS THAN (to_days(#{Time.now - (6 * 24 * 60 * 60)})),
PARTITION p2 VALUES LESS THAN (to_days(#{Time.now - (5 * 24 * 60 * 60)})),
PARTITION p3 VALUES LESS THAN (to_days(#{Time.now - (4 * 24 * 60 * 60)})),
PARTITION p4 VALUES LESS THAN (to_days(#{Time.now - (3 * 24 * 60 * 60)})),
PARTITION p5 VALUES LESS THAN (to_days(#{Time.now - (2 * 24 * 60 * 60)})),
PARTITION p6 VALUES LESS THAN (to_days(#{Time.now - (1 * 24 * 60 * 60)})),
PARTITION p7 VALUES LESS THAN (to_days(#{Time.now - (0 * 24 * 60 * 60)})),
PARTITION p8 VALUES LESS THAN MAXVALUE
);"
end
迁移的结果如下错误:
An error has occurred, all later migrations canceled:
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
'11:09:43 +0200)),
PARTITION p1 VALUES LESS THAN (to_days(2012-04-18 11:0' at line 4: ALTER TABLE multimedia
partition by range (to_days(created_at))
(
== AddPartitionToMultimedia: migrating =======================================
--
execute("ALTER TABLE multimedia \n
partition by range (to_days(created_at))\n
( \n
PARTITION p0 VALUES LESS THAN (to_days(2012-04-17 11:09:43 +0200)),\n
PARTITION p1 VALUES LESS THAN (to_days(2012-04-18 11:09:43 +0200)),\n
PARTITION p2 VALUES LESS THAN (to_days(2012-04-19 11:09:43 +0200)),\n
PARTITION p3 VALUES LESS THAN (to_days(2012-04-20 11:09:43 +0200)),\n
PARTITION p4 VALUES LESS THAN (to_days(2012-04-21 11:09:43 +0200)),\n
PARTITION p5 VALUES LESS THAN (to_days(2012-04-22 11:09:43 +0200)),\n
PARTITION p6 VALUES LESS THAN (to_days(2012-04-23 11:09:43 +0200)),\n
PARTITION p7 VALUES LESS THAN (to_days(2012-04-24 11:09:43 +0200)),\n
PARTITION p8 VALUES LESS THAN MAXVALUE \n
);")
【问题讨论】:
-
错误是:发生错误,所有以后的迁移都取消了:Mysql2::Error: You have an error in your SQL syntax;检查与您的 MySQL 服务器版本相对应的手册,以了解在附近使用的正确语法:
-
'11:09:43 +0200)), PARTITION p1 VALUES LESS THAN (to_days(2012-04-18 11:0' at line 4: ALTER TABLE 按范围划分多媒体分区 (to_days(created_at )) ('
标签: mysql ruby-on-rails migration partitioning