创建一个具有主键文本的MySQL表格

14 浏览
0 Comments

创建一个具有主键文本的MySQL表格

我用以下命令创建我的表:\nCREATE TABLE carts(order_id TEXT(14), items TEXT, shipping INT, price INT)\n我想将\'order_id\'设置为主键。我尝试使用以下命令修改表:\nALTER TABLE `carts` ADD PRIMARY KEY(order_id)\n但是返回了错误:\n#1170 - BLOB/TEXT column \'order_id\' used in key specification without a key length\n我理解这意味着在初始设置中没有正确设置长度,所以我尝试了以下命令:\nALTER TABLE `carts` ADD PRIMARY KEY(order_id(14))\n但是返回相同的错误。在phpmyadmin中定义的类型是\'tinytext\';我原本期望看到的是TEXT(14)。\n我通过PHP中的PDO执行所有这些命令。如何正确设置列\'order_id\'作为我的表的主键?

0
0 Comments

在MySQL中,BLOB/TEXT类型的数据不作为表的一部分,而是从其他内存位置引用。因此,它们不能作为KEY的一部分进行处理。

出现这个问题的原因是,MySQL不允许将BLOB/TEXT类型的列作为主键,因为它们的存储方式不同于其他数据类型。

解决这个问题的方法是将BLOB/TEXT类型的列转换为VARCHAR类型。可以使用ALTER TABLE语句修改表的列类型。

下面是解决问题的具体步骤:

1. 首先,使用ALTER TABLE语句将BLOB/TEXT类型的列修改为VARCHAR类型。

ALTER TABLE `carts` MODIFY order_id VARCHAR(14);

这将把原来的BLOB/TEXT类型的列order_id修改为VARCHAR(14)类型。

2. 然后,可以将修改后的order_id列设置为主键。

ALTER TABLE `carts` ADD PRIMARY KEY(order_id);

这将为表carts添加一个名为order_id的主键。

通过执行上述两个ALTER TABLE语句,可以解决在MySQL中创建具有主键文本键的表的问题。

0