MySQL使用過程當中的報錯處理(持續更新)

1、數據庫初始化mysql

一、Percona的MySQL 5.6.20版本數據庫初始化sql

初始化命令(MySQL 5.6版本不適用mysqld命令進行初始化)數據庫

./scripts/mysql_install_db --defaults-file=/opt/app/mysql/my.cnf --user=mysql --basedir=/opt/app/mysql --datadir=/opt/app/mysql/data 
報錯信息以下:
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
解決方法是安裝autoconf庫
執行命令:yum -y install autoconf 安裝成功後繼續執行初始化命令

 

2、MySQL使用問題處理bash

一、關於function的報錯併發

#數據庫中使用函數報錯以下
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable 若是咱們開啓了 bin-log, 咱們就必須爲咱們的function指定一個參數 解決辦法: set @@global.log_bin_trust_function_creators = 1;

二、字段長度過長致使的索引長度超出限制錯誤app

#導入數據報錯以下
ERROR 1071 (42000) at line 32131: Specified key was too long; max key length is 767 bytes #解決辦法:
set @@global.innodb_large_prefix = ON
#上述問題若是還存在則調節以下參數 ERROR
1709 (HY000) at line 32131: Index column size too large. The maximum column size is 767 bytes. set @@global.innodb_file_format_max = Barracuda; //默認的值爲Antelope set @@global.innodb_file_format = Barracuda ;

 

三、sysbench壓力測試MySQL的QPS&&TPS報錯less

#使用sysbench壓力測試調節threads參數爲100時,報錯以下
FATAL: `thread_init' function failed: /usr/share/sysbench/oltp_common.lua:284: SQL API error
FATAL: MySQL error: 1461 "Can't create more than max_prepared_stmt_count statements (current value: 16382)"
(last message repeated 3 times)

#解決辦法
在使用sysbench壓力測試的時候 併發線程達到100的時候報錯,max_prepared_stmt_count參數限制了同一時間在mysqld上全部會話中的prepare語句的上限,它的取值範圍爲「0--1048576」,默認值爲16382,超出這個值的prepare語句會報1461錯誤
set global max_prepared_stmt_count=1048576; //不建議調節,線程數給到16或者32就能夠知足壓力測試提供參考依據的目的

 

四、數據庫服務啓動問題函數

#數據庫服務start|stop|restart命令一直卡住,沒有輸出執行結果,經過status查看到有以下進程,嘗試kill該進程失敗
/bin/bash /usr/bin/mysql-systemd-start post

#解決辦法
經過錯誤日誌分析找到ERROR級別的日誌,分析錯誤點數據目錄沒法寫入,更改數據目錄的屬主屬組爲mysql,重啓服務恢復正常

 

五、delete使用子查詢問題post

delete from suser where id in (select id from user where user_id = 73539);
You can't specify target table 'sc_sys_user_weixin' for update in FROM clause#解決辦法將SELECT出的結果再經過中間表SELECT一遍,這樣就規避了錯誤
相關文章
相關標籤/搜索