日期:2014-05-17  浏览次数:20579 次

【有满意回答会加分】PHPMyAdmin里在表的浏览页面下只要选一次主键排序,就不能再选无主键排序了
本帖最后由 shendaowu 于 2013-04-06 21:32:01 编辑
我用的是XAMPP v3.1.0 Windows版。
我发现用PHP插入记录之后最后插入的记录在PHPMyAdmin里不是最后一条,就点了一下结果的表头中的id,然后查询结果就按id递增排序了,上面的查询语句也变成了这个:
SELECT * 
FROM  table 
ORDER BY  table.`id` ASC 
LIMIT 0 , 30
修改的时候只能修改SELECT * FROM table这个部分,下面的修改不了。
而且点击主键排序后面的那个下拉列表里的无业没有反应,不能把ORDER BY子句去掉。
奇怪的是我把这个表导出之后删掉,之后在导入进来还是有那个ORDER BY子句。

我有三个问题,第一个是怎么去掉那条ORDER BY子句,第二个是用PHP插入的最后一条记录在PHPMyAdmin里查看的时候为什么不是最后一条,第三个是不加ORDER BY的结果的顺序是不是就是数据库中的物理顺序。

--------------------------------------------------
刚才我自己把那个东西恢复了,那个东西保存在phpmyadmin这个数据库中的pma_table_uiprefs表里了,删除界面出错的表对应的记录之后重启服务就恢复了。那个表里的BLOB文件我看了,好像就是一些PHPMyAdmin的界面的配置,不知道删了会不会出问题?去掉那个ORDER BY子句之后顺序又乱了。
--------------------------------------------------
还有一些东西我没说:
那个表的主键被我设置成自增主键了。在用PHP插入之前我导入了一些数据,类似这样:
1 xx
2 ss
3 rr
然后用PHP插入。多次插入之后是这样的:
1 xx
2 ss
3 rr
4 ww

1 xx
2 ss
3 rr
5 ee
4 ww

1 xx
2 ss
3 rr
6 tt
5 ee
4 ww

但是我只导入表的结构之后用PHP插入就正常了。但是插入的时候id不是从0开始的,而是一个比较大的数,应该是上次最后使用的id的下一个,这样:
40 gg
41 ii
怎么才能让它从0开始?(或者是1?)

实在是不想浪费分,我问题比较多,分还是节省一点吧。如果有让我满意的回答的话我会加分的,如果能完全解决的话我会加80分,包括直接删phpmyadmin数据库中的那个表中的记录会不会出问题。

------解决方案--------------------
运行sql:
alter table '你的表名' AUTO_INCREMENT=1

前提是当前表数据为空;
------解决方案--------------------
第一个是怎么去掉那条ORDER BY子句
再点一次

第二个是用PHP插入的最后一条记录在PHPMyAdmin里查看的时候为什么不是最后一条
是否看到是最后一条,取决于主键的值和排序方式

第三个是不加ORDER BY的结果的顺序是不是就是数据库中的物理顺序
默认排序为主键升序
可以理解为物理顺序

插入数据前执行
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
可使“自增”失效,但你需要自行保证主键唯一

命令
TRUNCATE TABLE 表名
可以清空表并使“自增”复位