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 執行 Online DDL 操作報錯空間不足?MySql
- 【ERROR】JOB執行DDL語句報錯ORA-06550 & PLS-00103Error
- MySQL報錯Table 'plugin' is read only [ERROR] Can't open the mysql.plugin table.MySqlPluginError
- MySQL 5.6複製報錯Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND;MySqlError
- MySQL DDL執行方式-Online DDL介紹MySql
- django資料庫同步時報錯“Table 'XXX' already exists”Django資料庫
- SAP MM 對採購訂單執行收貨,報錯 - Table T169P entry ZNMI does not exist -
- mysql執行報錯mysql.sockMySql
- streamlit run執行報錯,Invalid value: File does not exist: XXX.py
- mysql5.6 mysqldump備份報錯MySql
- MySQL5.6 create table原理分析MySql
- Centos7-mysql執行報錯ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstatementbeforeexecutingthisstatement.CentOSMySqlError
- 執行flutter run命令報錯::ERROR: Could not connect to lockdownd, error code -17FlutterError
- MySQL DDL Waiting for table metadata lock 解決MySqlAI
- 【Mysql】MySQL 5.6中如何定位DDL被阻塞的問題MySql
- [BUG反饋]子查詢報錯,Base table or view not found: 1146 Table 'onethink.(' doesn't existView
- SAP Table function 執行報錯 feature not supported 該如何分析Function
- MySQL 5.6中如何定位DDL被阻塞的問題MySql
- Archery 平臺執行DDL error:Threads_connected exceeds its critical thresholdErrorthread
- 執行遷移檔案報錯: Syntax error or access violation: 1166 ...Error
- vagrant up 啟動報錯 Stderr: VBoxManage.exe: error: A NAT rule of this name already existsError
- mysql5.6在匯入時報innodb_table_stats不存在MySql
- MySQL 執行DDL語句 hang住了怎麼辦?MySql
- mysqldump匯出報錯"mysqldump: Error 2013 ... during query when dumping tableMySqlError
- 重啟docker服務後,容器啟動報錯:Error response from daemon: id already in useDockerError
- Setup had an error Error: At least one of these paths should existErrorAST
- MySQL 啟動報錯 error while loading shared librariesMySqlErrorWhile
- Redis 啟動報錯Address already in useRedis
- PSQLexception: ERROR : type "signed" does not existSQLExceptionError
- MYSQL報1022錯誤:Can't write;duplicate key in table '.....'MySql
- MySQL執行語句報Incorrect key file for table '/tmp/#sql_.MYI'; try to repair itMySqlAI
- MySQL error 錯 誤 碼MySqlError
- 初始配置:IntelliJ Android無法執行專案並報錯Error: Module not specifiedIntelliJAndroidError
- 執行SQL發生錯誤!錯誤:disk I/O errorSQLError
- PbootCMS 執行SQL發生錯誤!錯誤: no such table:ay_configbootSQL
- pgsql 執行建庫指令碼時候出現ERROR: relation "xxx_id_seq" does not existSQL指令碼Error
- 奇怪報錯資訊“db already exists with different case already have”解決方法
- MySQL建立觸發器時報錯Error Code: 1064MySql觸發器Error