ColumnName是唯一的(UNIQUE KEY ColumnName
)。
我只是想让专栏不唯一(必须很简单,但不能理解如何)。
如果在phpMyAdmin中检查列名并在底部单击Unique图标,则获得#1062 - Duplicate entry '' for key 'RegistrationNumber'
。好的,看到它是因为,点击图标它ADD UNIQUE
。
行中的"结构"中有"唯一"图标。但是图标无法点击。
在phpMyAdmin中没有找到如何做到这一点,尝试使用查询。
根据建议尝试CCD_ 4。
获取1091 Can't DROP 'ColumnName'; check that column/key exists
在这里https://stackoverflow.com/a/4414694/2465936找到This error means that you are trying to delete a key which is being used by another table.
可能ColumnName已被另一个表使用。
请建议如何使列不唯一。
使用SHOW CREATE TABLE
获取
Array
(
[0] => Array
(
[Table] => 18_6_TransactionPartners
[Create Table] => CREATE TABLE `18_6_TransactionPartners` (
`Number` int(11) NOT NULL AUTO_INCREMENT,
`CompanyName` char(255) COLLATE utf8_unicode_ci NOT NULL,
`RegistrationNumber` char(255) COLLATE utf8_unicode_ci NOT NULL,
.......
PRIMARY KEY (`Number`),
UNIQUE KEY `Number_2` (`Number`),
UNIQUE KEY `CompanyName` (`CompanyName`,`RegistrationNumber`),
KEY `Number` (`Number`)
) ENGINE=InnoDB AUTO_INCREMENT=444 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
)
)
更新
根据@Bart Friederichs的建议,尝试了ALTER TABLE 18_6_TransactionPartners DROP INDEX Number
,并将列RegistrationNumber
更改为非唯一列。不明白为什么(可能有一些独特的钥匙)。在任何情况下都可以更改为非唯一。
可能您有一个名为INDEX
的。使用SHOW CREATE TABLE tbl
可以找到索引的名称。然后按名称删除它们(例如一些测试表):
mysql> SHOW CREATE TABLE test;
CREATE TABLE `test` (
`entry_id` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
UNIQUE KEY `k` (`entry_id`)
)
要删除索引,请使用以下命令:
ALTER TABLE test DROP INDEX k;
您的密钥名称是RegistrationNumber
(如错误消息所示):
ALTER TABLE TableName DROP INDEX RegistrationNumber;
如果您的列使用unique子句定义为唯一的,那么您可以执行以下操作:
ALTER TABLE mytable DROP INDEX constraint_name
要删除索引,请执行以下操作:-
ALTER TABLE mytable DROP INDEX index_name;
您必须使用索引名而不是列名来删除索引。