Reputation: 163
I have table like this, I want to make partition based on Category ID.
CREATE TABLE film_category (
film_id SMALLINT UNSIGNED NOT NULL,
category_id TINYINT UNSIGNED NOT NULL,
last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP,
PRIMARY KEY (film_id, category_id),
CONSTRAINT fk_film_category_film FOREIGN KEY (film_id) REFERENCES
film (film_id) ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT fk_film_category_category FOREIGN KEY (category_id)
REFERENCES category (category_id) ON DELETE RESTRICT ON UPDATE
CASCADE)ENGINE=InnoDB DEFAULT CHARSET=utf8;
So I wrote in mysql shell
ALTER TABLE film_category
PARTITION BY RANGE(category_id) (
PARTITION p1 VALUES ('1'),
PARTITION p2 VALUES ('2'),
PARTITION p3 VALUES ('3'),
PARTITION p4 VALUES ('4'),
PARTITION p5 VALUES ('5'),
PARTITION p6 VALUES ('6'),
PARTITION p7 VALUES ('7'),
PARTITION p8 VALUES ('8'),
PARTITION p9 VALUES ('9'),
PARTITION p10 VALUES ('10'),
PARTITION p11 VALUES ('11'),
PARTITION p12 VALUES ('12'),
PARTITION p13 VALUES ('13'),
PARTITION p14 VALUES ('14'),
PARTITION p15 VALUES ('15'),
PARTITION p16 VALUES ('16')
); But I got error message
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 '('1'),
PARTITION p2 VALUES ('2'),
PARTITION p3 VALUES ('3'),
PARTITION ' at line 5
Any clue on what syntax error I made?
Upvotes: 0
Views: 30
Reputation: 108839
You need ...
PARTITION p1 VALUES LESS THAN (2),
PARTITION p2 VALUES LESS THAN (3),
etc. Two things.
VALUES LESS THAN
is the syntax.
Don't put numbers in quotes ('2')
when you mean actual numbers (2)
Upvotes: 1