MySQL 5.6執行DDL報錯ERROR 1050 (42S01): Table 'sms/#sql-ib752' already exist
執行ALTER TABLE增加欄位的時候報錯:
mysql> ALTER TABLE who_sku_relation ADD COLUMN red_line_price DECIMAL(10,2) NOT NULL DEFAULT '0.00'; ERROR 1050 (42S01): Table 'sms/#sql-ib75227' already exists
報錯原因:
在alter table的過程中,MySQL當機,會在資料目錄裡存在資料變更的中間表,中間表是以“#sql-”開頭的臨時表。
臨時表不手動刪除掉,無法在相應的表上執行 ALTER TABLE 語句。
在資料目錄裡面檢視臨時表的資訊,找不到 .frm表結構檔案和 .ibd資料檔案。
$ ls -l | grep '#sql-ib75227*' | wc -l
解決方法:
手動建立 .frm表結構檔案和 .ibd資料檔案,之後刪除臨時表。
建立一張測試表。
mysql> use test mysql> create table test.tmp like sms.who_sku_relation; Query OK, 0 rows affected (0.00 sec)
將測試表的 .frm 表結構檔案複製成臨時表的 .frm 表結構檔案和 .ibd 資料檔案。
$ cp ../test/tmp.frm "#sql-ib75227.frm" $ cp ../test/tmp.frm "#sql-ib75227.ibd" $ ls -l \#sql-ib75227* -rw-r----- 1 tungsten mysql 15007 Sep 29 21:23 #sql-ib75227.frm -rw-r----- 1 tungsten mysql 15007 Sep 29 21:25 #sql-ib75227.ibd
在資料庫中 DROP 臨時表,並在原來增加表結構出錯的表上執行結構變更。
mysql> drop table `#mysql50##sql-ib75227`; Query OK, 0 rows affected (0.00 sec) mysql> ALTER TABLE who_sku_relation ADD COLUMN red_line_price DECIMAL(10,2) NOT NULL DEFAULT '0.00'; ERROR 1813 (HY000): Tablespace for table 'sms/#sql-ib75227' exists. Please DISCARD the tablespace before IMPORT.
刪除掉資料檔案中殘留的臨時表資料檔案。
$ ls -l \#sql-ib75227* -rw-r----- 1 tungsten mysql 15007 Sep 29 21:25 #sql-ib75227.ibd $ rm "#sql-ib75227.ibd"
執行資料庫表結構變更
mysql> ALTER TABLE who_sku_relation ADD COLUMN red_line_price DECIMAL(10,2) NOT NULL DEFAULT '0.00'; Query OK, 0 rows affected (0.05 sec) Records: 0 Duplicates: 0 Warnings: 0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2215370/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【MySQL】重放binlog故障一則 ERROR 1050 (42S01) : Table '' already existsMySqlError
- GoldenGate 執行ddl_setup.sql出錯 ORA-00942: table or view does not existGoSQLView
- MySQL 啟動報錯 Table 'mysql.plugin' doesn't existMySqlPlugin
- MYSQL ERROR 1146 Table doesnt exist 解析MySqlError
- 【MySQL】5.6.x InnoDB Error Table mysql.innodb_table_stats not foundMySqlError
- SNMP TABLE ERROR : Requested table is empty or does not existError
- MySQL 執行 Online DDL 操作報錯空間不足?MySql
- MySQL查詢報錯:ERROR 1146 (42S02): Table 'craw.sitePageConfig' doesn't existMySqlError
- aix Oracle 使用者報錯:Too many processes already existAIOracle
- MySQL報錯Table 'plugin' is read only [ERROR] Can't open the mysql.plugin table.MySqlPluginError
- 配置ogg ddl 執行 ddl_setup 報錯處理方法
- 【ERROR】JOB執行DDL語句報錯ORA-06550 & PLS-00103Error
- MySQL5.6執行計劃錯誤案例分析MySql
- MySQL 5.6複製報錯Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND;MySqlError
- mysql執行報錯mysql.sockMySql
- mysql執行sql指令碼報錯ERROR 1366 (HY000) 解決MySql指令碼Error
- MySQL5.6:mysql_secure_installation 報錯ERROR 2002 (HY000)MySqlError
- MySQL DROP TABLE刪除表報錯'ERROR 1051 (42S02): Unknown table'MySqlError
- 【MySQL】部分5.6版本罕見覆制報錯 ERROR 1837MySqlError
- MySQL 5.5原始碼安裝時啟動資料庫報錯"Table 'mysql.user' doesn't exist??"MySql原始碼資料庫
- mysql5.6 mysqldump備份報錯MySql
- MySQL 5.6 Table cache 簡介MySql
- MySQL DDL執行方式-Online DDL介紹MySql
- Linux環境下MySQL報Table 'xxx' doesn't exist錯誤解決方法LinuxMySql
- ERROR 1146 (42S02): Table 'mysql.slow_log' doesn't existErrorMySql
- MySQL 5.5 報錯"ERROR 1075 (42000): Incorrect table definition"MySqlError
- MySQL 5.6 Online DDL.mdMySql
- 'mysql.column_stats' doesn't exist and Table 'mysql.index_stats' doesn't existMySqlIndex
- MYSQL SOURCE報錯 ERROR: ASCIIMySqlErrorASCII
- SAP MM 對採購訂單執行收貨,報錯 - Table T169P entry ZNMI does not exist -
- job呼叫過程報錯 ORA-00942: table or view does not existView
- MySQL 常用DDL執行方式總結MySql
- MySQL5.6 create table原理分析MySql
- 執行flutter run命令報錯::ERROR: Could not connect to lockdownd, error code -17FlutterError
- mysql執行命令報segmentation fault 錯誤MySqlSegmentation
- mysql報錯ERROR 1093MySqlError
- MySQL 5.6版本哪些操作可以進行online DDLMySql
- SAP Table function 執行報錯 feature not supported 該如何分析Function