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

歡迎訪問 生活随笔!

生活随笔

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

数据库

MySQL使用时遇到的问题

發布時間:2024/4/19 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL使用时遇到的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mysql開啟日志功能

  • 通過mysql -u root -p進入mysql命令行
  • show variables like ‘%log%’;會顯示所有和日志有關的信息
  • log_error,表示錯誤日志的存儲路徑,該文件保存mysql的錯誤信息
  • general_log_file,表示通用日志的存儲路徑,該文件保存所有執行過的mysql語句(包括代碼中調用的mysql API)
  • slow_query_log_file,表示慢語句日志的存儲路徑,該文件保存所有執行時間超過某個值的mysql語句(時間值由另一個變量設置)
  • 如果想查詢某一個,比如log_error,可以使用show variables like ‘%log_error%’;

如果上面幾個日志文件的路徑都是空,或者想要更改路徑,可以在配置文件中更改

  • 配置文件是/etc/mysql/conf.d中的mysql.cnf(不知道為什么只有我的在這里)
  • 打開這個文件,在[mysqld]下面添加路徑
  • log_error=/var/log/mysql/error.log(路徑可以自己更改)
  • general_log=ON(表示開啟通用日志功能)
  • general_log_file=/var/log/mysql/general.log
  • slow_query_log=ON(表示開啟慢查詢日志功能)
  • slow_query_log_file=/var/log/mysql/slow.log

重啟mysql

  • service mysql restart可以重啟mysql
  • /etc/init.d/mysql restart也可以重啟mysql

重啟mysql時出現錯誤

  • 錯誤信息mysql.serviceJob for mysql.service failed because the control process exited with error code. See “systemctl status mysql.service” and “journalctl -xe” for details.
  • 一種可能是配置文件寫錯,哪個單詞拼錯等都會導致這個問題,這個大概可以從錯誤日志中發現
  • 另一種可能是日志文件的權限問題,通常都是系統自己創建日志文件,不需要自己手動創建,如果手動創建,那么創建的日志文件的所屬id不是mysql而是root,mysql無權限寫入(可以通過更改id解決,也可以刪了重啟,因為mysql會自己創建)

程序運行過程中一段時間沒有與mysql服務器通訊會自動斷開連接

  • 一般這個值默認是8小時,解決方法有兩個
  • 一種是程序設計定時任務,每隔多長時間訪問一次,干什么都行,只要執行mysql語句
  • 另一種是更改配置文件,將這個時間增大,在配置文件中(/etc/mysql/conf.d/mysql.conf)的[mysqld]下面添加
    • wait_timeout=604800(秒數,改覺得可以的值)
    • interactive_timeout=604800(秒數,同理)
    • 通常這兩個一起設置

將中文存儲到mysql中出現亂碼

  • 配置文件中添加character-set-server=utf8,設置編碼為utf8
  • 建表的時候在后面添加DEFAULT CHARSET=UTF8

  • //引自菜鳥教程 CREATE TABLE runoob_tbl(-> runoob_id INT NOT NULL AUTO_INCREMENT,-> runoob_title VARCHAR(100) NOT NULL,-> runoob_author VARCHAR(40) NOT NULL,-> submission_date DATE,-> PRIMARY KEY ( runoob_id )-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 在程序代碼中設置utf8編碼格式,以C++為例
  • ::mysql_set_character_set(&conn_, "utf8");

    ?

多線程下對數據庫的訪問出現的各種各樣的錯誤

  • 記得加鎖,加鎖,以前一直以為mysql自己會加鎖,天真:cry:

mysql的自動重連功能(以C++為例,不知道好不好使)

  • char value = 1; ::mysql_options(&conn_, MYSQL_OPT_RECONNECT, static_cast<char*>(&value));
  • 在需要檢測是否已斷開時可以使用::mysql_ping(&conn_);

  • 如果連接正常,返回0,否則-1,如果開啟自動重連,會重連參數表示的連接

總結

以上是生活随笔為你收集整理的MySQL使用时遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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