24

所以我的 MySQL 数据库的行为有点奇怪。这是我的桌子:

Name shares id  price   indvprc
cat   2     4   81      0
goog  4     4   20      20
fb    4     9   20      20

当我尝试插入表格时,我收到了这个 #1062 错误。所以我进一步研究它并意识到当我尝试将值插入到表中时,其中名称和份额值相同,它会返回 #1062 错误。例如,如果我插入:

fb    4      6     20   20 

它会返回一个错误。但是,如果我将股数更改为 6,它会运行良好。是因为我的专栏之一可能是独一无二的,还是只是 mysql 的东西?

4

9 回答 9

17

您需要删除shares作为您的PRIMARY KEYORUNIQUE_KEY

于 2012-07-24T20:12:10.507 回答
8

用于SHOW CREATE TABLE your-table-name查看哪一列您的主键。

于 2012-07-24T20:10:19.193 回答
8
  1. 确保PRIMARY KEY被选中AUTO_INCREMENT
  2. 只需启用自动增量:
    ALTER TABLE [table name] AUTO_INCREMENT = 1
  3. 当您执行插入命令时,您必须跳过此键。
于 2016-02-04T02:34:29.660 回答
3

我通过将“锁定”属性从“共享”更改为“独占”来解决它:

ALTER TABLE `table` 
CHANGE COLUMN `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT COMMENT '' , LOCK = EXCLUSIVE;
于 2015-12-09T02:19:02.463 回答
2

确切的错误信息是什么?#1062 表示重复条目违反列的主键约束 - 归结为您不能在列中有两个相同的值。错误消息应该告诉您哪些列受到限制,我猜是“共享”。

于 2012-07-24T20:11:27.450 回答
1

可能这不是最好的解决方案,但执行以下操作将解决问题

第 1 步:使用以下命令进行数据库转储

mysqldump -u root -p databaseName > databaseName.db

找到线

ENGINE=InnoDB AUTO_INCREMENT="*****" DEFAULT CHARSET=utf8;

第 2 步:更改*******为 mysql 表 ID 的最大 ID。保存此值。

第三步:再次使用

mysql -u root -p databaseName < databaseName.db

在我的情况下,当我添加一个手动条目用于将数据输入到其他表中时,我得到了这个错误。一些我们必须如何AUTO_INCREMENT使用 mysql 命令将值设置为 max id

于 2013-04-15T10:15:57.040 回答
0

由您的域提供商 cpanel 修复数据库。

或者看看你是否没有在 phpMyAdmin 中合并一些东西

于 2017-04-14T20:03:07.157 回答
0

由于存在自动增量和主键列,我正在导入的数据库在导入过程中发生冲突。

问题是在 .sql 文件中,表被分割成多个“INSERT INTO”,并且在导入期间这些查询一起执行。

我的解决方案是取消选择 Navicat 上的“在每次执行中运行多个查询”,它运行良好

于 2020-10-30T09:01:40.960 回答
-2

我使用 DataNucleus 和使用 UTF8 创建的数据库从 mySQL 收到此错误 - 错误是由主键的此注释引起的:

@PrimaryKey
@Unique
@Persistent(valueStrategy = IdGeneratorStrategy.UUIDSTRING)
protected String id;

删除表并使用此修复它重新生成它。

@PrimaryKey
@Unique
@Persistent(valueStrategy = IdGeneratorStrategy.UUIDHEX)
protected String id;
于 2017-06-03T19:50:32.330 回答