MySQL使用时遇到的问题

来源:互联网 发布:知乎 发现 编辑:程序博客网 时间:2024/06/14 12:14

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,如果开启自动重连,会重连参数表示的连接
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗拉血是怎么回事 拉大便屁眼有血 拉屎都是血 大便拉出来有血怎么回事 肚子疼拉血是什么原因 经常拉血怎么回事 一直拉血 拉大便拉出好多血不疼 拉血便是怎么回事鲜红 拉出的屎有血 上大便有血 拉完屎后有血 小狗拉血是怎么回事 吃辣的拉血 女人拉血咋回事 拉血肚子疼 屁股留血怎么回事 突然拉血 血便怎么办 大便中有血怎么回事 拉血了 便后纸上有血 便秘有血是怎么回事 粪便隐血试验阳性 大便流很多血 便后有血是怎么回事 屁股有血流出怎么回事 便便有血不疼 男生拉的屎中有血 小孩拉大便有血 腹泻拉血怎么回事 小孩拉屎有血 大便岀血 排便有血是怎么回事 拉屎出很多血 大便中有血是怎么回事 大厕出血怎么回事 女人便血是什么原因 拉肚子带血怎么回事 便血肛门疼 辣椒吃多了会便血吗