所以我的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的东西?
答案 0 :(得分:13)
您需要将shares
或PRIMARY KEY
UNIQUE_KEY
答案 1 :(得分:7)
使用SHOW CREATE TABLE your-table-name
查看哪个列 是您的主键。
答案 2 :(得分:7)
//#1
config = new RealmConfiguration.Builder(_activity)
.name("static.realm")
.build();
//#2
config = new RealmConfiguration.Builder(_activity)
.name("user.realm")
.schemaVersion(1)
.migration(new Migration())
.build();
{。1}}。PRIMARY KEY
强> 答案 3 :(得分:3)
我通过更改"锁定"解决了这个问题。属于"共享" to" exclusive":
ALTER TABLE `table`
CHANGE COLUMN `ID` `ID` INT(11) NOT NULL AUTO_INCREMENT COMMENT '' , LOCK = EXCLUSIVE;
答案 4 :(得分:2)
确切的错误讯息是什么? #1062表示违反列的主键约束的重复条目 - 归结为列中不能有两个相同的值。错误消息应该告诉你哪些列受到约束,我猜是“共享”。
答案 5 :(得分:1)
可能这不是解决方案中最好的,但执行以下操作将解决问题
步骤1:使用以下命令进行数据库转储
mysqldump -u root -p databaseName > databaseName.db
找到行
ENGINE=InnoDB AUTO_INCREMENT="*****" DEFAULT CHARSET=utf8;
步骤2:将*******
更改为mysql表ID的最大ID。保存此值。
第3步:再次使用
mysql -u root -p databaseName < databaseName.db
在我的情况下,当我添加一个手动条目用于将数据输入到其他表中时,我收到此错误。一些我们如何使用mysql命令将值AUTO_INCREMENT
设置为max id
答案 6 :(得分:0)
您的域名提供商cpanel修复数据库。
或者看看你是不是在phpMyAdmin中合并了什么
答案 7 :(得分:0)
由于要同时存在自动增量和主键列,因此我正在导入的DB发生了冲突。
问题在于,在.sql文件中,表被切成多个“ INSERT INTO”,并且在导入期间,这些查询全部一起执行。
我的解决方案是在Navicat上取消选择“在每次执行中运行多个查询”,并且效果很好
答案 8 :(得分:-2)
我使用DataNucleus和使用UTF8创建的数据库从mySQL发生此错误 - 错误是由主键的此注释引起的:
@PrimaryKey
@Unique
@Persistent(valueStrategy = IdGeneratorStrategy.UUIDSTRING)
protected String id;
删除表并使用此方法重新生成它。
@PrimaryKey
@Unique
@Persistent(valueStrategy = IdGeneratorStrategy.UUIDHEX)
protected String id;