2013-09-24 46 views
1

今天我嘗試使用phpMyAdmin重新排序一列表(如我以前做過很多次)。 儘管結果顯示爲成功,但沒有發生有效的重新排序。使用phpMyAdmin重新排序使用InnoDB存儲引擎的列不起作用

看起來問題是由於使用InnoDB作爲存儲引擎而引起的,這是MySQL 5.5以後的默認值。 當我改回myIsam時,問題解決了。它澄清了爲什麼它在某些表格上工作。

這是一個可解決的mySQL問題嗎?或者這是InnoDB的常規預期行爲? 在後一種情況下,phpMyAdmin應該適用於在使用InnoDB時不提供功能。

MySQL的:5.5.29 phpMyAdmin的:4.0.4

+0

嘗試與其他一些GUI客戶端。 –

回答

1

如果...重新排序列...你的意思

ALTER TABLE ... ORDER BY ... 

則具有PRIMARYUNIQUE KEY InnoDB表它不起作用。它的設計:

ALTER TABLE
ORDER BY 不會爲包含 用戶定義的聚集索引(PRIMARY KEY或NOT NULL UNIQUE指數)的InnoDB表意義。 如果存在 ,InnoDB將根據此索引始終對錶格行進行排序。

在另一方面,如果你沒有在你的桌子,這是極不可能的PRIMARYUNIQUE KEY做,那麼MySQL將允許您更改順序。

這裏是SQLFiddle演示,演示該行爲。

+0

是的,我的標題實際上是不準確的。事實上,它重新排序表,我的意思是改變表。所以這是正常的預期行爲,也許可以通過在操作選項卡下不提供此功能來增強phpMyAdmin。 – AFvS

+0

@AFvS正如我在第二個例子中展示的那樣,如果您的表中沒有PK或UNIQUE KEY,則可以使用它。雖然我同意它在現實世界的場景中沒有多少意義。 – peterm

+0

創建的Bug票:https://sourceforge.net/p/phpmyadmin/bugs/4102/ –