2015-05-15 126 views
6

我的共享主機不允許SSH訪問。我試圖用phpmyadmin導出數據庫並導入到新的服務器上。我一直得到這個錯誤,我不知道如何解決它。任何幫助表示讚賞。Phpmyadmin導出問題

Error 
SQL query: 
-- 
-- Indexes for dumped tables 
-- 
-- 
-- Indexes for table `EWRporta_blocks` 
-- 
ALTER TABLE `EWRporta_blocks` ADD PRIMARY KEY ( `block_id`) , 
ADD KEY `title` ( `title`) ; 
MySQL said: Documentation 
#1068 - Multiple primary key defined 
+0

嘗試使用命令行?它更安全,只是一條線路命令。你可能會發現很多文檔。它也更快。 –

+0

我無法在我的共享主機上訪問。 – TheShadyOneHD

+0

總有一些方法。詢問你的主人。找出命令行訪問權限。 –

回答

0

正如其他人所說的那樣,刪除並重新創建表格。在phpmyadmin中,選擇導出時標記爲「添加DROP TABLE」的複選框。然後,所述問題應在導入時解決。

1

我已經遇到過這個問題多次,和modonoghue有一個有效的方式來處理它通過刪除您的表和完全重新創建它們。

問題&的通用解決方案

基本上正在發生的事情是,你正在嘗試運行正在將值插入到已經存在的主鍵的INSERT語句 - 從而給你重複鍵的錯誤。數據庫不知道如何處理具有相同鍵的多個條目,因爲SQL邏輯基於具有完全唯一的主鍵的每個「行」。

想要什麼做的是所有的值保存到導出的SQL文件,因爲,當您再次導入該文件,刪除所有現有值的查詢(假設你想將它恢復到並且不用擔心在導出日期和導入日期之間保存的數據!)和插入所有導出的值...或以某種方式避免嘗試添加具有現有密鑰的新條目(請參閱以下內容) 。

一種方法導出一個特定的數據庫(TRUNCATE):

  1. 換句話說,當你使用phpMyAdmin來導出SQL文件,單擊「自定義 - 顯示所有可能的選擇」。
  2. 在「格式特定的選項」 確保「結構和數據」被選中(否則你可能最終下探表和不具有數據將它們與恢復!)
  3. 在「數據創建選項「選擇」插入前截斷表「 - 這將刪除表中的所有現有數據。

導入時,所有的現有數據將在每個表(TRUNCATE)被刪除,所導出的數據將被寫回表(INSERT),但自己不會被刪除的表(DROP) 。

忽略VS TRUNCATE(替代路線)

你應該能夠跳過上述步驟3(TRUNCATE),而是選擇複選框「而不是INSERT語句使用......」「INSERT語句忽略」

基本上,「IGNORE」只會跳過導出數據中的重複項,並阻止您刪除現有數據。如果您只想添加丟失的數據,而不刪除自上次導出以來更改/添加的數據,則這很好。

超級用戶(對重複密鑰更新)

還有一個INSERT INTO ...對重複密鑰更新......這允許你告訴查詢到底該怎麼做,如果有一個重複鍵。這可以防止您忽略具有相同鍵的兩個條目,這些鍵可能不是完全相同的條目。然而,設置正確會更復雜。

0

刪除評論由導出工具

-- 
-- Indexes for dumped tables 
-- 
-- 
-- Indexes for table `EWRporta_blocks` 
-- 

生成並嘗試執行查詢作爲只跟隨

ALTER TABLE EWRporta_blocks ADD PRIMARY KEY(block_id), 添加項titletitle);