将 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 语句