我们以前项目用的是mysql-5.0.22-win32.zip版本,在向数据库插入数据的时候是必然插入到表的最后一行的,现在用的mysql-noinstall-5.0.22-win32.zip版本,结果在插入数据的时候会插入到刚刚删除的一行,请问有什么办法可以让这个版本的插入顺序和之前的版本一样可以直接插入到最后一行啊,是不是要修改My.ini的什么设置啊。
比如原来表中的顺序是
a
b
c
然后将b那行删除,表的顺序就变成
a
c
然后插入一行e
原来的顺序是
a
c
e
但是现在的顺序是
a
e
c
请问怎么才能变回和原来一样啊,跪求

解决方案 »

  1.   

    数据库理论中表中的记录本身是没有顺序的。一般应该用order by 来控制记录的排序。如果order by之后仍有问题,检查一下你 my.ini 中的 character-set-server 的定义以及你表中这个字段的 character-set 及 collation  的定义。
      

  2.   

    表是MYISAM的吧,在配置变量中有一个concurrent_insert变量设置myisam的并发插入行为:
    0时,不允许并发插入,插入数据时加排他锁;
    1时,默认值,只有表中没有delete数据产生的holes,才允许并发插入,将记录追加到表后面,否则将等待插入到holes中;
    2时,当有线程读数据时,强迫myisam插入数据时作append操作,只有当没有线程读数据时才考虑将数据插入holes中,这容易产生磁盘碎片。这是相关的插入操作使用磁盘的方法,你的操作估计是单线程,貌似无法实现你的要求,所以还是用楼上说的order by吧。