2011-08-25 92 views
1

我在Idaq託管軟件包上使用Webmin來管理我的MySQL數據庫。我從前一個主機導入了數據庫,現在發現我無法更改任何特定表中的數據,因爲出現錯誤「此表中的數據由於沒有主鍵而無法編輯」。在沒有主鍵的MySQL數據庫中編輯數據

在一個PHP腳本中,我可以改變數據,但真的需要從控制面板中改變它。

當我嘗試創建一個主鍵字段我得到以下錯誤「無法保存現場:SQL改變表userbase添加referenceNumber SMALLINT NOT NULL AUTO_INCREMENT失敗:不正確的表定義;只能有一個自動柱,它必須被定義爲一個鍵「

我很清楚,任何表都應該包含一個主鍵,這是我的錯誤,但任何人都可以提供一些幫助嗎?

+0

你能告訴我們表的定義(CREATE TABLE ...)嗎? – Devart

+0

我的答案解決了您的問題嗎? –

+0

對不起,對於遲到的響應,但它工作了一個治療Pez,謝謝 – Mick

回答

2

這是因爲您沒有在同一時間將它設置爲密鑰,所以它不能通過and it must be defined as a key部件,因此將密鑰放在最後。

使用

ALTER TABLE tableName ADD autoIncrementColumn MEDIUMINT NOT NULL AUTO_INCREMENT KEY 

額外的資訊從約翰在評論

@Mick,爲了增加PEZ的答案,如果你不提供一個主鍵, 的MySQL增加了一個隱藏主整數自動增量鍵。爲了 覆蓋隱藏鍵,alter table語句必須指定 增加一個新字段並在同一行 中分配新PK,否則隱藏PK將阻止更改。

+0

@Mick,要添加到PEZ的答案,如果你不提供主鍵,MySQL會添加一個隱藏的主整數自動增量鍵。爲了覆蓋隱藏鍵,「alter table」語句必須指定添加一個新字段並在同一行中分配新PK,否則隱藏PK將阻止更改。 – Johan

+0

感謝Johan的額外細節,我沒有意識到這一點! –