MySQL常見報錯匯總


 

 

 

 

 

 

1>.ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

  報錯原因:

    在MySQL的配置文件中未指定“--secure-file-priv”參數的默認值,而改參數的功能就是確定使用SELECT ... INTO語句時將查詢的結果保存到本地文件中,如果未指定則不可以使用該功能。 

  解決方案:

    既然知道原因所在,我們需要做2個操作,第一步是修改配置文件,如下所示。第二步就是重啟MySQL服務使得配置生效~

[root@node110 ~]# cat /etc/my.cnf | grep secure_file_priv
secure_file_priv=/yinzhengjie/backup
[root@node110 ~]# 
[root@node110 ~]# /etc/init.d/mysql.server restart
Shutting down MySQL... SUCCESS! 
Starting MySQL. SUCCESS! 
[root@node110 ~]#  

 

2>.ERROR 1 (HY000): Can't create/write to file '/yinzhengjie/backup/student.bak' (OS errno 13 - Permission denied) 

  報錯原因:

    根據報錯的提示信息大家不難判斷,這是由於權限不足導致!

  解決方案:

    既然知道的報錯的原因,解決起來就很輕松了,比如改目錄分配相應的權限,一種比較暴力的方法就是給該目錄分配最高權限。如下所示:(當然你也可以只給啟動mysql服務的用戶分配ACL權限~) 

[root@node110 backup]# pwd
/yinzhengjie/backup
[root@node110 backup]# 
[root@node110 yinzhengjie]# ll
total 12
drwxr-xr-x. 2 root root 4096 Jan 26 15:08 backup
drwxr-xr-x. 2 root root 4096 Jan 23 06:04 download
drwxr-xr-x. 3 root root 4096 Jan 23 06:04 softwares
[root@node110 yinzhengjie]# chmod 777 backup -R
[root@node110 yinzhengjie]# 
[root@node110 yinzhengjie]# 
[root@node110 yinzhengjie]# ll
total 12
drwxrwxrwx. 2 root root 4096 Jan 26 15:08 backup
drwxr-xr-x. 2 root root 4096 Jan 23 06:04 download
drwxr-xr-x. 3 root root 4096 Jan 23 06:04 softwares
[root@node110 yinzhengjie]# 

3>.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, 我們就必須指定我們的函數是否是上述提示信息中的 “DETERMINISTIC (不確定的)”,“ NO SQL (沒有SQl語句,當然也不會修改數據)”,“ READS SQL DATA (只是讀取數據,當然也不會修改數據)”,“ MODIFIES SQL DATA 要修改數據” ,“CONTAINS SQL (包含了SQL語句)”。

    其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我們開啟了 bin-log, 我們就必須為我們的function指定一個參數。

  解決方案:

    在MySQL中創建函數時出現上述錯誤的解決方法,如下:

mysql> SHOW VARIABLES LIKE 'log_bin';                 #在MySQL8.0中,log_bin被打開了,在MySQL5.7之前的版本是關閉狀態的!
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.00 sec)

mysql>
mysql> SHOW VARIABLES LIKE '%trust%'; 
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | OFF |
+---------------------------------+-------+
1 row in set (0.00 sec)

mysql> 
mysql> set global log_bin_trust_function_creators=TRUE;      #由於開啟了log_bin功能,因此我們需要將創建函數的功能手動開啟

Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> SHOW VARIABLES LIKE '%trust%';                
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | ON    |
+---------------------------------+-------+
1 row in set (0.00 sec)

mysql> 
mysql> 
mysql> set global log_bin_trust_function_creators=TRUE;
Query OK, 0 rows affected (0.00 sec)

mysql> 
mysql> CREATE FUNCTION hello(str CHAR(30))
    -> RETURNS CHAR(50)
    ->  RETURN CONCAT('Hello,',str,'!');
Query OK, 0 rows affected (0.00 sec)

mysql> 

4>.mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

 

  報錯原因:

    缺少依賴庫文件,名曰“libaio.so”。

  解決方案:

    既然知道缺少依賴庫文件,我們直接使用yum工具安裝一下即可!具體操作如下所示:

[root@node101 ~]# yum -y install libaio
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.jdcloud.com
 * extras: mirrors.neusoft.edu.cn
 * updates: mirrors.163.com
Resolving Dependencies
--> Running transaction check
---> Package libaio.x86_64 0:0.3.109-13.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================================================================================
 Package                                   Arch                                      Version                                             Repository                               Size
=======================================================================================================================================================================================
Installing:
 libaio                                    x86_64                                    0.3.109-13.el7                                      base                                     24 k

Transaction Summary
=======================================================================================================================================================================================
Install  1 Package

Total download size: 24 k
Installed size: 38 k
Downloading packages:
libaio-0.3.109-13.el7.x86_64.rpm                                                                                                                                |  24 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libaio-0.3.109-13.el7.x86_64                                                                                                                                        1/1 
  Verifying  : libaio-0.3.109-13.el7.x86_64                                                                                                                                        1/1 

Installed:
  libaio.x86_64 0:0.3.109-13.el7                                                                                                                                                       

Complete!
[root@node101 ~]# 
[root@node101 ~]# yum -y install libaio

5>.mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

 

  報錯原因:

    很明顯是文件權限問題,大家可以自行去看"/etc/my.cnf"配置文件的內容配置的是否正確,如果你配置的目錄或文件不存在的話,可能會拋出各種各樣的異常!

  解決方案:

[root@node101 ~]# mkdir /var/log/mariadb
[root@node101 ~]# 
[root@node101 ~]# touch /var/log/mariadb/mariadb.log
[root@node101 ~]# 
[root@node101 ~]# chown -R mysql:mysql /var/log/mariadb/
[root@node101 ~]# 

 

  如果你發現本篇博客沒有你相關的錯誤處理記錄,也可以去看看官網常見的錯誤分析,是否有和你報錯一致的:https://dev.mysql.com/doc/refman/8.0/en/error-handling.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM