将 uuid(UUID 类型)插入 mysql 时报告键 PRIMARY 的重复条目
When insert uuid (Type UUID) into mysql report duplicate entry for key PRIMARY
代码中,通过UUID post_uuid = uuidGenerator.generate()
生成一个UUID
,然后插入到mysql.
Connection conn = sql2o.beginTransaction();
UUID postUuid = uuidGenerator.generate();
conn.createQuery("insert into posts(post_uuid, title, content, publishing_date) values (:post_uuid, :title, :content, :date)")
.addParameter("post_uuid", postUuid.toString())
.addParameter("title", title)
.addParameter("content", content)
.addParameter("date", new Date())
.executeUpdate();
categories.forEach(category ->
conn.createQuery("insert into posts_categories(post_uuid, category) VALUES (:post_uuid, :category)")
.addParameter("post_uuid", postUuid.toString())
.addParameter("category", category)
.executeUpdate());
conn.commit();
return postUuid;
RandomUuidGeneratorClass
public class RandomUuidGenerator implements UuidGenerator{
@Override
public UUID generate() {
// TODO Auto-generated method stub
return UUID.randomUUID();
}
}
在mysql中,post_uuid
的字段是CHAR(36)
我运行代码的时候报错
错误指向第二个插入 sql addParameter("category", category).executeUpdate())
尝试使用它的字符串值
.addParameter("post_uuid", postUuid.toString ())
it said that in table posts_categories it has the duplicate entry for key PRIMARY
不要让 post_uuid
成为 posts_categories
的主键。
对于您集合中的每个元素 categories
您 运行 具有相同 postUuid
.
的 INSERT 语句
代码中,通过UUID post_uuid = uuidGenerator.generate()
生成一个UUID
,然后插入到mysql.
Connection conn = sql2o.beginTransaction();
UUID postUuid = uuidGenerator.generate();
conn.createQuery("insert into posts(post_uuid, title, content, publishing_date) values (:post_uuid, :title, :content, :date)")
.addParameter("post_uuid", postUuid.toString())
.addParameter("title", title)
.addParameter("content", content)
.addParameter("date", new Date())
.executeUpdate();
categories.forEach(category ->
conn.createQuery("insert into posts_categories(post_uuid, category) VALUES (:post_uuid, :category)")
.addParameter("post_uuid", postUuid.toString())
.addParameter("category", category)
.executeUpdate());
conn.commit();
return postUuid;
RandomUuidGeneratorClass
public class RandomUuidGenerator implements UuidGenerator{
@Override
public UUID generate() {
// TODO Auto-generated method stub
return UUID.randomUUID();
}
}
在mysql中,post_uuid
的字段是CHAR(36)
我运行代码的时候报错
错误指向第二个插入 sql addParameter("category", category).executeUpdate())
尝试使用它的字符串值
.addParameter("post_uuid", postUuid.toString ())
it said that in table posts_categories it has the duplicate entry for key PRIMARY
不要让 post_uuid
成为 posts_categories
的主键。
对于您集合中的每个元素 categories
您 运行 具有相同 postUuid
.