日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

存储过程mysql报错1271_mysqldump备份失败以及解决方法汇总

發布時間:2023/12/4 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 存储过程mysql报错1271_mysqldump备份失败以及解决方法汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mysqldump備份失敗以及解決方法匯總〇 mysqldump: Error: Query execution was interrupted, maximum statement execution time exceeded when trying to dump tablespaces

〇 mysqldump: Error 3024: Query execution was interrupted, maximum statement execution time exceeded when dumping table `$tb_name` at row: xxxx

版本:

MySQL 5.7.8+

原因:

max_execution_time過小

處理思路:

① 通過hints,增大N值(文檔說,在hints用法中,將N改為0為無限制,但我測下來不生效,可設置成一個較大值如999999解決)

SELECT /*+ MAX_EXECUTION_TIME(N) */ * FROM t1 LIMIT 100000;

② 修改max_execution_time值,將該值設置為較大一個值,或設置為0(不限制)

附錄:

該參數5.7.8被添加,單位為ms,動態參數,默認為0,設置為0時意味著SELECT超時不被設置(不限制超時時間)。不作用于存儲過程中的SELECT語句,并且只作用于只讀的SELECT,如INSERT ... SELECT ... 是不被作用的。

for more information:

http://blog.itpub.net/29773961/viewspace-2150443/〇 mysqldump: Couldnt execute SHOW FIELDS FROM `$view_name`: View $db_name.$view_name references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them (1356)

原因:

該view引用了無效的表,列,函數或者定義者。

處理思路:

可以根據報錯信息,進入db,執行SHOW CREATE VIEW $view_name\G,查看該view的定義,逐一檢查該view的基表,列,或相關函數與用戶是否具有相關權限。考慮重建或刪除視圖。〇 mysqldump: Couldnt execute show create table `$view_name`: Illegal mix of collations for operation UNION (1271)

原因:

創建view時,使用UNION時存在非法的排序規則組合。

處理思路:

檢查該視圖定義,檢查字符集,考慮重建或刪除視圖。〇?mysqldump: Couldnt execute SHOW FIELDS FROM `$view_name`: The user specified as a definer ($user@$host) does not exist (1449)

〇 mysqldump: Couldnt execute show table status like $view_name: SELECT command denied to user @% for column $col_name in table $tb_name (1143)

原因:

該視圖的定義者$user@$host不存在。

處理思路:

檢查mysql.user表,確認用戶是否存在,考慮重建或刪除視圖。〇 Error: Couldnt read status information for table Income_config ()mysqldump: Couldnt execute show create table `Tser_table`: Table $db_name.test_table doesnt exist (1146)

〇 mysqldump: Got error: 1049: Unknown database $db_name when selecting the database

原因一:

從lower_case_table_names的0設置成1,導致部分原來含有大寫字母的庫表“找不到”。

處理思路:

將lower_case_table_names設置回0。

若有必須將lower_case_table_names設置為1,需先設置為0,并將含有大寫字母的庫表改成小寫,再設置為1。

原因二(MySQL 5.5及以下版本可能出現):

表損壞導致該表找不到(InnoDB)。frm和ibd文件都在,但無法SHOW CREATE TABLE xxx\G

error log一則:170820 17:43:17?[Note]?Event Scheduler:?scheduler thread started with id 1

170820 17:44:48 InnoDB:?error:?space object?of?table?'$db_name/$tb_name',

InnoDB:?space id 4335 did?not?exist?in?memory.?Retrying an open.

170820 17:44:48 InnoDB:?Error:?tablespace id?and?flags?in?file?'./$db_name/$tb_name.ibd'?are 0?and?0,?but?in?the InnoDB

InnoDB:?data dictionary they are 4335?and?0.

InnoDB:?Have you moved InnoDB?.ibd files around without using the

InnoDB:?commands DISCARD TABLESPACE?and?IMPORT TABLESPACE?

InnoDB:?Please refer to

InnoDB:?http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting-datadict.html

InnoDB:?for?how to resolve the issue.

170820 17:44:48 InnoDB:?cannot calculate statistics?for?table $db_name/$tb_name

InnoDB:?because the?.ibd file is missing.?For?help,?please refer to

InnoDB:?http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting.html

170820 17:44:48?[ERROR]?MySQL is trying to open a table handle but the?.ibd file?for

table $db_name/$tb_name does?not?exist.

Have you deleted the?.ibd file from the database directory under

the MySQL datadir,?or?have you used DISCARD TABLESPACE?

See http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting.html

how you can resolve the problem.

處理思路:

從完整備份+binlog還原,對于有主或從的實例,可通過物理備份還原。〇 mysqldump: Error 2020: Got packet bigger than max_allowed_packet bytes when dumping table `$tb_name` at row: xxxx

原因:

默認的max_allowed_packet過小

處理思路:

在mysqldump時增加max_allowed_packet的大小,如mysqldump --max-allowed-packet=268435456〇 mysqldump: Error 1412: Table definition has changed, please retry transaction when dumping table `$tb_name` at row: 0

原因:

在備份該表時,表定義被修改。FLUSH TABLE WITH READ LOCK只保證數據一致性,并不保證schema不被修改。

處理思路:

備份時期不做DDL操作。

復現一:① session1>?CREATE?TABLE?a?(id?int)?ENGINE=InnoDB;

② session2>?START TRANSACTION WITH CONSISTENT SNAPSHOT;

③ session1>?ALTER?TABLE?a ADD COLUMN name?varchar(32);

④ session2>?SELECT?*?FROM?a;

ERROR 1412?(HY000):?Table?definition has changed,?please retry transaction

p.s. 如果③和④調換順序,則ALTER TABLE無法成功,則會等待MDL。

復現二:① session1>?START TRANSACTION WITH CONSISTENT SNAPSHOT;

② session2>?CREATE?TABLE?b?(id?int)?ENGINE=InnoDB;

③ session1>?SELECT?*?FROM?b;

ERROR 1412?(HY000):?Table?definition has changed,?please retry transaction

〇 mysqldump: Couldnt execute show create table `$tb_name`: Unable to open underlying table which is differently defined or of non-MyISAM type or doesnt exist (1168)

原因:

出現在表引擎為MERGE時,備份到該表時,發現該表定義存在問題。可能merge的表不存在,或者該表合并的基表包含非MyISAM引擎的表。

處理思路:

刪除或者重建該MERGE表。

復現一(merge表中定義包含了非MyISAM表):CREATE?TABLE?t1(id?int)?ENGINE=InnoDB;

CREATE?TABLE?t2(id?int)?ENGINE=MyISAM;

CREATE?TABLE?merge_t(id?int)ENGINE=MERGE UNION=(t1,?t2);

SELECT?*?FROM?merge_t;

ERROR 1168?(HY000):?Unable?to?open underlying?table?which?is?differently defined?or?of non-MyISAM type?or?doesn't exist

復現二(表不存在):CREATE?TABLE?t1(id?int)?ENGINE=MyISAM;

CREATE?TABLE?t2(id?int)?ENGINE=MyISAM;

CREATE?TABLE?merge_t(id?int)ENGINE=MERGE UNION=(t1,?t2);

SELECT?*?FROM?merge_t;

Empty?set?(0.00 sec)-- 正常返回

DROP?TABLE?t1;

SELECT?*?FROM?merge_t;

ERROR 1168?(HY000):?Unable?to?open underlying?table?which?is?differently defined?or?of non-MyISAM type?or?doesn't exist

附錄:

通過check table merge_t可以檢查是哪張表有問題,如此處是t1:[15:20:12]?root@localhost?[test]>?check?table?merge_t\G

***************************?1.?row?***************************

Table:?test.merge_t

Op: check

Msg_type: Error

Msg_text:?Table?'test.t1'?is?differently defined?or?of non-MyISAM type?or?doesn't exist

*************************** 2. row ***************************

Table: test.merge_t

Op: check

Msg_type: Error

Msg_text: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist

***************************?3.?row?***************************

Table:?test.merge_t

Op: check

Msg_type: error

Msg_text: Corrupt

3 rows?in?set?(0.00 sec)

通過cat表MGR��義結構文件可以檢查MERGE表的基表:

[root@host?test]#?pwd

/data/mysql-data/mysql57/data/test

[root@host?test]#?cat merge_t.MRG

t1

t2

〇 mysqldump: Couldnt execute show create table `$tb_name`: Table ./$db_name/$tb_name is marked as crashed and last (automatic?) repair failed (144)

〇 mysqldump: Couldnt execute show create table `$tb_name`: Table ./$db_name/$tb_name is marked as crashed and should be repaired (145)

〇 mysqldump: Error 1194: Table throne_tower is marked as crashed and should be repaired when dumping table `$tb_name` at row: xxxxx

原因:

mysqldump在拉取表定義時報錯,表損壞。

處理思路:

該損壞發生在非事務表如MyISAM,通過mysqlcheck或者repair table修復即可。〇 mysqldump: Couldnt execute SHOW FUNCTION STATUS WHERE Db = $db_name: Cannot load from mysql.$tb_name. The table is probably corrupted (1728)

原因:

字典表不正確,可能是表本身損壞,也有可能是導入了其他版本的mysql schema蓋掉了字典表。

處理思路:

repair table修復,若仍無用,則可以嘗試mysql_upgrade來修復,或找到對應版本的mysql_system_tables_fix.sql來導入。〇 mysqldump: Couldnt execute show events: Cannot proceed because system tables used by Event Scheduler were found damaged at server start (1577)

原因:

字典表不正確,極大可能是導入了其他版本的mysql schema蓋掉了字典表。

處理思路:

嘗試mysql_upgrade來修復,或找到對應版本的mysql_system_tables_fix.sql來導入。該報錯可能在upgrade操作之后重啟實例。〇 mysqldump: Error: Got error 28 from storage engine when trying to dump tablespaces

mysqldump: Couldnt execute show fields from `$tb_name`: Got error 28 from storage engine (1030)

原因:

@@tmpdir滿了。

處理思路:

清除@@tmpdir,可以通過SELECT @@tmpdir;檢查具體目錄。〇 mysqldump: Lost connection to MySQL server during query (2013)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '@@socket' (111)

原因:

mysqldump執行過程中mysqld被關閉。

處理思路:

檢查mysqld被關閉的原因,一般常見原因是發生OOM。〇 mysqldump: Couldn't execute 'SHOW SLAVE STATUS': Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation (1227)

原因:

mysqldump加了--dump-slave參數,缺少SUPER或REPLICATION CLIENT來執行SHOW SLAVE STATUS。

處理思路:

檢查mysqldump的用戶權限。〇 mysqldump: Couldn't execute 'STOP SLAVE SQL_THREAD': Access denied for user 'dump'@'localhost' (using password: YES) (1045)

原因:

mysqldump加了--dump-slave參數,缺少SUPER權限使用STOP SLAVE SQL_THREAD。

處理思路:

檢查mysqldump的用戶權限。

總結

以上是生活随笔為你收集整理的存储过程mysql报错1271_mysqldump备份失败以及解决方法汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。