创建一个具有主键文本的MySQL表格
创建一个具有主键文本的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\'作为我的表的主键?
在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中创建具有主键文本键的表的问题。