1月18
大家都知道删除分区的语句如下:
ALTER TABLE '表名' DROP PARTITION '分区名' ; 但是这样的话只能一个个分区去删除,而且删除分区同时会把数据也给删除掉了,那么mysql删除表的所有分区如何操作呢?
只要使用ALTER TABLE 表名 REMOVE PARTITIONING 就可以删除所有分区,但数据不会被删除。

查询指定表的分区信息以及每个分区的行数
SELECT PARTITION_NAME,TABLE_ROWS
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME = '表名';

SELECT
  PARTITION_NAME,PARTITION_DESCRIPTION,
FROM_UNIXTIME(PARTITION_DESCRIPTION,'%Y-%m-%d') EXPIRYDATE,TABLE_ROWS
FROM
INFORMATION_SCHEMA.PARTITIONS where TABLE_NAME ='表名';
1月18
今天主要介绍下面这几个错误:

ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning

ERROR 1503 (HY000): A UNIQUE INDEX must include all columns in the table's partitioning function

主键必须包括表的分区函数中的所有列,一个惟一的索引必须包括表的分区函数中的所有列,是不是不太好理解意思

其实就是这么个意思:表上的每一个唯一性索引必须用于分区表的表达式上(其中包括主键索引)

下面我来举几个例子:


CREATE TABLE t1 (  
     id INT NOT NULL,  
     aid DATE NOT NULL,  
     bid INT NOT NULL,  
     PRIMARY KEY (id)  
)  
PARTITION BY KEY(bid)  
PARTITIONS 10;
[Err] 1503 - A PRIMARY KEY must include all columns in the table's partitioning function


CREATE TABLE t1 (  
     id INT NOT NULL,  
     aid DATE NOT NULL,  
     bid INT NOT NULL,    
     UNIQUE KEY (id)  
)  
PARTITION BY KEY(bid)  
PARTITIONS 10;
[Err] 1503 - A PRIMARY KEY must include all columns in the table's partitioning function


CREATE TABLE t1 (  
     id INT NOT NULL,  
     aid DATE NOT NULL,  
     bid INT NOT NULL,  
     PRIMARY KEY (id,bid)  
)  
PARTITION BY KEY(bid)  
PARTITIONS 10;
Query OK, 0 rows affected (0.535 sec)

分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]