草庐IT

auto-increment

全部标签

mysql - MySQL 中用于多主复制的自动递增主键的替代方法

我指定的Web应用程序需要水平扩展,并且从一开始就需要一对MySQL服务器(可能在启动后很快增加到多个)。由于自动增量主键不合适,我想知道人们使用什么替代方案。带有日期的东西最有意义,但如果你深入到毫秒级别并假设一个三位数的服务器ID,那将是一个非常大的数字:sssyymmddhhmmssmicros或001110510143622123456现在-另外,您也许可以在开头使用另一个数字来简化前导零(也许是数据中心ID)。纪元时间缩短了它,但只是一点点。还有什么? 最佳答案 我认为您正在寻找的是UUID(通用唯一标识符)。在MySQL

mysql - 如何更新表以添加主键并使用递增的 ID 更新所有现有行?

我有一个表,其中包含我导入的20,000行数据,但我忘记在上面放置一个主键,以便每一行都有一个唯一的键。我希望第一行从ID1开始,一直递增到最后一行并在ID20000结束。如何使用单个查询更新所有行?我正在使用MySQL。已尝试使用PhpMyAdmin,但它不会这样做。 最佳答案 添加新的ID列后(暂时不要设置为主键,也不要开启自增)运行:SET@index=1;UPDATEtablenameSETID=(@index:=@index+1);这会在每个现有行上设置一个从1开始递增的ID值,从而解决在输入数据后尝试插入新的主键列时将面

MySQL 为什么在插入时我的自动递增不是从 1 开始?

为什么当我使用jdbc向我的数据库中插入时,我的表auto_increments被顶起。填充完全空表的示例:狗表DogIdDogName3Woofer4Kujo5Spike所有者表OwnerIdDogIDOwnerName63George74John85Sam期望的结果狗表DogIdDogName1Woofer2Kujo3Spike所有者表OwnerIdDogIDOwnerName11George22John33Sam实际代码:publicvoidinsertStuff(Somethingd){Connectioncon=null;try{Class.forName("com.mysq

mysql - 避免插入失败以避免虚假的自动增量

我的问题和WhydoesMySQLautoincrementincreaseonfailedinserts?一样,但与其增加我的id字段,我更愿意重写给我带来麻烦的INSERT查询。假设我有一个包含两个字段的数据库,id和username,其中id是主键,username是一个独特的key。我本质上是在寻找可以执行INSERT...IFNOTEXISTS的语法。现在,我做INSERTINTO`table`(`username`)VALUES('foo')ONDUPLICATEKEYUPDATE`id`=`id`我只有一个线程写入数据库,所以我不需要任何类型的并发保护。有什么建议吗?

java - Hibernate 实体跨表而不是每个表自动递增 id

目前我有三个表:Company、Group、Person。这三个表通过Company与Group一对多以及Group与Person一对多连接。在所有三个类(Company.java、Group.java、Person.java)中,我用这种方式编写了自动递增唯一标识:@Id@Column(name="id")@GeneratedValueprivateintid;然后我按以下顺序实例化了所有三个类:Company、Group、Person。将这些对象保存到我的数据库后,我注意到表中的ID有问题。显然,不是按1、2、3、4等顺序增加公司的ID;它在1,4,7,10...中增加。按照同样的

MySQL 使用没有 auto_increment 的递增值填充新列

我看到很多几乎相似的问题都有明显的答案,但我很确定这个问题还没有出现在这里。我需要向现有表添加一个自动递增的id列并将其设置为主键。我不能丢失任何现有数据。我可以成功地对表结构进行更改,但我收到有关新列中数据被截断的错误。当我查看数据时,新的自动递增列中的每个值都是null(因此不是唯一的)。如何回填这些值以确保主键的唯一性?***如果有更简单的解决方案,我宁愿避免将现有数据转储到临时表并重新插入。当前脚本:altertablethe_tableaddnew_fieldintfirst;altertablethe_tabledropprimarykey,addprimarykey(ne

mysql - phpmyadmin 不再让我设置 auto_increment 值

我以前可以在phpmyadmin->table->operations中设置auto_increment值,但我现在在这个框中看不到了:http://puu.sh/4dhf4.png它曾经就在下面,是的,我的表有一个auto_increment字段。我正在使用phpmyadmin4.4.0,我已经尝试从InnoDB切换到MyISAM。我以root身份登录到phpmyadmin。 最佳答案 我不确定他们为什么删除此功能,但执行此“老派”的方法是单击SQL选项卡,然后运行以下MySQL命令:ALTERTABLE`sessions`aut

php - MySQL 覆盖 auto_increment?

我正在创建一个消息传递系统(使用PHP)并想为每条消息分配一个ID号(除了每条具有唯一ID号的实际消息之外)...但是,如果有人回复消息,那么我想要能够为该消息提供与被回复的消息相同的ID...当然我可以按时间显示它们并按顺序显示它们。那么,如果我给该字段一个auto_increment类型,它是否可以被覆盖?意思...每条新消息都有自动值,例如1、2、3等,但有人回复数字2,所以它的ID也需要2或者有更好的方法吗? 最佳答案 绝对没有什么能阻止您将任意值分配给AUTO_INCREMENT列。如有必要,桌面计数器将相应调整。但是,您

MySQL - 导出数据,并忽略主键。然后使用自动增量导入

我有一个表,主键在自动递增列“id”和列“data”中表格内容:id|data1|aaaaa2|bbbbb3|whatever:P5|dang99|hello如您所见,有5行。id是1、2、3、5、99(没有id=4或id=6到98)。我如何导出此表,然后将其导入另一个表(当然是相同的结构),id将获得值1,2,3,4,5而不是1,2,3,5,99.(或者将它们导入到一个已经有数据的表中,导入的id将采用该表的auto_increment值中的任何值并继续?)注意:如果有专门针对PhpMyAdmin的解决方案,欢迎欢迎。-抱歉英语不好!(操作随意编辑) 最佳

mysql - 如何重用 auto_increment 值?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Fragmentationofid's(auto_incrementcolumn)inmysql我的数据库中有这一列。假设它的名字是“threadid”。它包含给予每个线程以进行区分的唯一ID。线程标识98个76个5个4个3个2个1假设我删除了ID为5和6的线程。线程标识98个74个3个2个1但是删除后有提交的时候,给那个线程的唯一id是10,不是5,我觉得这样不太整洁。如何在列中获得尽可能小的值?(在本例中为5。)我认为我可以使用MIN()获取列的最小值并保持+1直到我获得未使用的唯一值,但我认为这太复杂了