zoukankan      html  css  js  c++  java
  • Duplicate entry '0' for key 'PRIMARY'的一种可能的解决办法

    在MySQL设计好数据库往往数据库中插入数据的时候,

    因为主键ID默认是不赋值的,只给其他项目赋值了,相关的SQL代码是这样的

      StringBuilder strSql = new StringBuilder();
                strSql.Append("insert into  tb_enterprise_product(");
                strSql.Append("enterprise_id");
                strSql.Append(",datetime");
                strSql.Append(",value");
                strSql.Append(",product");
    
                strSql.Append(") values(");
                strSql.Append("@enterprise_id");
                strSql.Append(",@datetime");
                strSql.Append(",@value");
                strSql.Append(",@product");
    
                strSql.Append(")");
                MySqlParameter[] parameters = new MySqlParameter[]
                {
              new  MySqlParameter("@enterprise_id",  MySqlDbType.Int32)
          , new  MySqlParameter("@datetime", MySqlDbType.VarChar)
          , new  MySqlParameter("@value", MySqlDbType.VarChar)
          , new  MySqlParameter("@product", MySqlDbType.VarChar)
              };
    

    数据库的设计是这样的

    可以发现因为ID是主键   所以SQL语句没有给ID赋值

    那么问题来了,id是int类型,int类型如果不允许为空那么会被默认为0,所以插入第二条数据时,数据库中已经有了主键为0的数据,所以冲突了,产生了错误!

    Duplicate entry '0' for key 'PRIMARY'

    那么,解决办法时,把id字段设置为自增类型,相关SQL语句是:

    create table t_user( id int primary key auto_increment ) 


  • 相关阅读:
    C# 托管内存与非托管内存之间的转换
    A*算法详解链接
    【转】使用minizip解压缩多个文件(基于zlib)
    lua中table的遍历,以及删除
    clientHeight scrollHeight offsetHeight
    消息中间件(转)
    js 原型链和继承(转)
    session 和 cookie (转)
    java servlet
    redis 命令
  • 原文地址:https://www.cnblogs.com/CoderAyu/p/8490126.html
Copyright © 2011-2022 走看看