Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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_Sql_Partitioning_Create Table - Fatal编程技术网

创建具有分区语法错误的表:MySQL

创建具有分区语法错误的表:MySQL,mysql,sql,partitioning,create-table,Mysql,Sql,Partitioning,Create Table,我在使用分区创建MySQL表时出错 CREATE TABLE employees ( context VARCHAR(25), id INT ) PARTITION BY LIST(context) ( PARTITION pNorth VALUES IN('ads','asd') ); 它给出: 错误1064 42000:值必须与asd'附近的分区函数的类型相同 “在6号线 请帮帮我。我认为这里的问题是您试图在VARCHAR数据类型列上进行分区。对于列表分区,

我在使用分区创建MySQL表时出错

    CREATE TABLE employees (
    context VARCHAR(25),
    id INT
)
PARTITION BY LIST(context) (
    PARTITION pNorth VALUES IN('ads','asd')
);
它给出:

错误1064 42000:值必须与asd'附近的分区函数的类型相同 “在6号线


请帮帮我。

我认为这里的问题是您试图在VARCHAR数据类型列上进行分区。对于列表分区,必须引用整型列。发件人:

MySQL中的列表分区类似于许多数据库中的范围分区 方式。与按范围分区一样,每个分区都必须显式 定义这两种分区类型之间的主要区别是 在列表分区中,定义并选择每个分区 基于列值在一组值之一中的成员身份 列表,而不是在一组连续的值范围中。 这是通过使用partitionbylistexpr实现的,其中expr是一列 值或基于列值并返回 整数值,然后通过值定义每个分区 在值列表中,其中值列表是以逗号分隔的 整数

当然是误导性的错误

编辑

您应该注意的是按列表列进行分区,而不是通过列表进行分区。因此:


我认为这里的问题是,您试图在VARCHAR数据类型列上进行分区。对于列表分区,必须引用整型列。发件人:

MySQL中的列表分区类似于许多数据库中的范围分区 方式。与按范围分区一样,每个分区都必须显式 定义这两种分区类型之间的主要区别是 在列表分区中,定义并选择每个分区 基于列值在一组值之一中的成员身份 列表,而不是在一组连续的值范围中。 这是通过使用partitionbylistexpr实现的,其中expr是一列 值或基于列值并返回 整数值,然后通过值定义每个分区 在值列表中,其中值列表是以逗号分隔的 整数

当然是误导性的错误

编辑

您应该注意的是按列表列进行分区,而不是通过列表进行分区。因此:

没有提到列作为关键字。 尝试从查询中删除列:

CREATE TABLE ...
)
PARTITION BY LIST (context) (
  PARTITION pNorth VALUES IN('ads','asd')
)
没有提到列作为关键字。 尝试从查询中删除列:

CREATE TABLE ...
)
PARTITION BY LIST (context) (
  PARTITION pNorth VALUES IN('ads','asd')
)

正如@Bill Karwin所指出的。。
在MySQL 5.1中,只能使用整数进行列表分区。在MySQL 5.5中,他们添加了使用其他数据类型创建列表列的功能。

正如@Bill Karwin指出的那样。。
在MySQL 5.1中,只能使用整数进行列表分区。在MySQL 5.5中,他们添加了使用其他数据类型创建列表列的功能。

您可能会发现,与合适的索引相比,按列表没有任何性能优势


.

您可能会发现,与合适的索引相比,“按列表”没有任何性能优势


.

请阅读此错误,因为在按列表划分的分区中,每个分区都是通过值列表中的值定义的,其中值列表是以逗号分隔的整数列表。有关详细信息,请参阅此处:请阅读此错误,因为在按列表划分的分区中,每个分区都是通过值列表中的值定义的,其中value_list是一个逗号分隔的整数列表。有关详细信息,请参阅此处:@Deepshikha。。但是这个文档中给出的第一个例子怎么样。该列表中的值_列表似乎包含字符串。+1正确。在MySQL 5.1中,只能使用整数进行列表分区。在MySQL 5.5中,他们添加了使用其他数据类型进行列表列的功能。建议阅读文档。@Deepshikha。。但是这个文档中给出的第一个例子怎么样。该列表中的值_列表似乎包含字符串。+1正确。在MySQL 5.1中,只能使用整数进行列表分区。在MySQL 5.5中,他们添加了使用其他数据类型进行列表列的功能。建议阅读文档。是在MySQL 5.5中引入的。是在MySQL 5.5中引入的。