2015-08-04 2 views
0

Добрый день, я совершенно уверен, что здесь что-то не хватает, но я не уверен, что я намерен создать архив таблица для журналов, разделенная по неделям, поэтому я могу удалить разделы в будущем.Ошибка SQL (1005): Не удается создать таблицу (errno: 1) Операция не разрешена

Я видел это возможно в соответствии с: http://dev.mysql.com/doc/refman/5.1/en/partitioning-management-range-list.html Я побежал те же тесты, и все работало нормально, но когда я пытаюсь создать следующую таблицу:

CREATE TABLE `tbDatabaseErrors` (
    `idError` INT(6) NOT NULL AUTO_INCREMENT, 
    `database` VARCHAR(50) NULL DEFAULT NULL, 
    `table` VARCHAR(50) NULL DEFAULT NULL, 
    `errorMessage` VARCHAR(150) NULL DEFAULT NULL, 
    `severity` TINYINT(4) NULL DEFAULT NULL, 
    `DateTimeCreated` DATETIME NOT NULL, 
    `WeekCreated` TINYINT(2) NOT NULL, 
    PRIMARY KEY (`idError`, `WeekCreated`) 
) 
COLLATE='latin1_swedish_ci' 
ENGINE=ARCHIVE 
PARTITION BY RANGE(WeekCreated) (
    PARTITION p0 VALUES LESS THAN (4), 
    PARTITION p1 VALUES LESS THAN (8), 
    PARTITION p2 VALUES LESS THAN (12), 
    PARTITION p3 VALUES LESS THAN (16), 
    PARTITION p4 VALUES LESS THAN (20), 
    PARTITION p5 VALUES LESS THAN (24), 
    PARTITION p6 VALUES LESS THAN (28), 
    PARTITION p7 VALUES LESS THAN (32), 
    PARTITION p8 VALUES LESS THAN (36), 
    PARTITION p9 VALUES LESS THAN (40), 
    PARTITION p10 VALUES LESS THAN (44), 
    PARTITION p11 VALUES LESS THAN (48), 
    PARTITION p12 VALUES LESS THAN (53) 
); 

я получаю:

SQL Error (1005): Can't create table 'support.tbDatabaseErrors' (errno: 1) 
Operation not permitted 

Любой шанс, что кто-то может помочь мне отладить и понять, что здесь не так?

ответ

1

Archive Engine имеет так много ограничений, он не поддерживает замену, обновление и удаление, после чего он не принимает несколько столбцов первичных или составных ключей. Вы должны указать один столбец как первичный ключ или уникальный ключ. Это не поможет в вашем случае.

https://dev.mysql.com/doc/refman/5.0/en/archive-storage-engine.html

CREATE TABLE `tbDatabaseErrors` (
    `idError` INT(6) NOT NULL AUTO_INCREMENT, 
    `database` VARCHAR(50) DEFAULT NULL, 
    `table` VARCHAR(50) DEFAULT NULL, 
    `errorMessage` VARCHAR(150) DEFAULT NULL, 
    `severity` INT(4) DEFAULT NULL, 
    `DateTimeCreated` DATETIME DEFAULT current_timestamp, 
    `WeekCreated` INT(2) NOT NULL, 
    PRIMARY KEY(`idError`) 
) 
ENGINE=ARCHIVE 
COLLATE latin1_swedish_ci; 
OK, 0 rows affected (0.01 sec) 

ОШИБКА:

mysql> CREATE TABLE `tbDatabaseErrors` (
     ->  `idError` INT(6) NOT NULL AUTO_INCREMENT, 
     ->  `database` VARCHAR(50) DEFAULT NULL, 
     ->  `table` VARCHAR(50) DEFAULT NULL, 
     ->  `errorMessage` VARCHAR(150) DEFAULT NULL, 
     ->  `severity` INT(4) DEFAULT NULL, 
     ->  `DateTimeCreated` DATETIME DEFAULT current_timestamp, 
     ->  `WeekCreated` INT(2) NOT NULL, 
     ->  PRIMARY KEY (`idError`, `WeekCreated`) 
     ->) 
     -> ENGINE=ARCHIVE 
     -> COLLATE latin1_swedish_ci; 

ERROR 1030 (HY000): Got error -1 from storage engine 

Опять здесь вы не можете добавить parition на несырьевых колонку, которая, очевидно, приведет к ошибке. Попробуйте использовать другой движок, который поддерживает действия по удалению и обновлению.

+0

Честно говоря, мне не нужно обновлять удаление и замену, именно поэтому я выбрал архив для его компактных размеров. Но факт, что я не могу иметь раздел в поле недели недели, делает все «упражнение» бессмысленным. Я принимаю ваш ответ как правильный. Спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^