我建表时将id设为了 auto increment , 后来有我使用时发现id应该是从1开始的,但是结果却是从2开始递增,我是使用的C++,下面的是我部分代码:
sql_->SetAutoCommit(0);
if(sql_->InsertUserLoginTable(id,"") == -1)
{
result = "regist faild1";
}
else
{
std::string ID = sql_->GetLastID();
std::cout << "ID : " << ID << std::endl;
if (sql_->InsertLoginInfoTable(ID, "", "", "", IMEI, BTMAC) == -1)
{
result = "regist faild2";
}
else if (sql_->InsertUserInfoTable(ID, FaceID, NickName, "", "", "3") == -1)
{
result = "regist faild3";
}
else if (sql_->InsertUserRecordTable(ID, RegistIP) == -1)
{
result = "regist faild4";
}
else
{
result = "regist success";
}
}
if(result == "regist success")
{
sql_->Commit(0);
}
else
{
sql_->Commit(1);
}
sql_->SetAutoCommit(1);
其中有一些是我自己封装的方法,部分如下:
void SetAutoCommit(int i)
{
sql->AutoCommit(i);
}
int Commit(int i)
{
sql->CommitSQL(i);
}
void AutoCommit(int i)
{
mysql_autocommit(connection_,i);
}
int CommitSQL(int i)
{
if(i == 1)
{
mysql_rollback(connection_);
return -1;
}
else
{
mysql_commit(connection_);
return 0;
}
}
在使用MySQL中,经常会在表中建立一个自增的ID字段,利用自增ID能够快速建立索引,也是MySQL官方比较推荐的一种方式,但是,这种方式在大量数据且配置主从时,可能会出现由于自增ID导致同步失败的情况
首先需要了解一点
Mysql主从同步主要通过bin log来同步,而MySQl中bin log最大值为1G,
这种情况触发条件如下:
1、数据库配置主......
答案就在这里:谨慎使用MySQL auto_increment
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
那是否已经插入一个序号为1的记录,还是第一条记录插入失败了
我刚刚又重建了数据库尝试,然后这回是从1开始的,我就不知道是什么问题了
我刚刚又重建了数据库尝试,然后这回是从1开始的,我就不知道是什么问题了