Mysql

重新創建在 ALTER 語句期間刪除的表 (errno: -1)?

  • May 2, 2016

在過去的 2-3 週內,我第三次在ALTER聲明中收到以下資訊:

錯誤 2013:在查詢 SQL 語句期間失去與 MySQL 伺服器的連接:

ALTER TABLE my_database.my_table

在這種情況下,我將更AUTO_INCREMENT改為 55,就是這樣。這是必要的,因為我們將 JSON 字元串儲存在LONGTEXT引用數據庫 ID 的欄位中,但是在遷移腳本期間它沒有正確插入所有行,因此 ID 與已經存在的 ID 不匹配。AUTO_INCREMENT必須僅出於功能目的而進行修復。

我使用的 MySQL Workbench 版本是 6.3.3.0 build 592。

嘗試刷新我的模式時,我得到:

錯誤程式碼:2013 查詢期間失去與 MySQL 伺服器的連接

當我嘗試重新創建表時,我收到以下消息:

錯誤程式碼:1005。無法創建表“my_database.my_table”(錯誤號:-1)

似乎ALTER在創建新表定義之前刪除了舊表定義。

我怎樣才能解決這個問題?

該數據庫在 AWS RDS 上執行,因此除了 Amazon 允許我更改的內容之外,我無法更改任何內容。我不能再在我的模式中按名稱重新創建前三個表中的任何一個,但只能用於 InnoDB。如果我嘗試在 MyISAM 中創建此表,它會起作用。

我將 Propel 用於遷移腳本,因此我確實通過抑制XML 表標籤的*autoIncrement欄位來明確指定**id列。*我不想轉儲我的表並重新執行遷移腳本,所以我手動修復了 ID,然後嘗試在這一切發生時將其更改為應有的值。AUTO_INCREMENT

  • 將所有表移動到臨時數據庫
  • 刪除原始數據庫(現在它是空的)
  • 將表從臨時數據庫移動到原始數據庫。

這應該修復 InnoDB 字典,您將能夠再次創建表。

該聲明:

DROP TABLESPACE `data_feed_param`;

如果我的使用者有權限,現在可以解決我的問題,而不必RENAME在 MySQL 5.6 上使用我的表。CREATE TABLESPACE

引用自:https://dba.stackexchange.com/questions/103279