MySql Lost connection to MySQL server during query问题

MySql Lost connection to MySQL server during query问题
今天发现自己写的一条sql语句导致mysql提示MySql Lost connection to MySQL server during query了,这个听朋友说是mysql数据库不稳定导致的,下面我来看一下解决办法. 有时候当进行一个长的查询的时候会出现 Lost connection to MySQL server during query这样的错误. MySQL层面,需要配置一些参数 my.cnf. wait_timeout = x 超时时间 max_allowed_packet = y 最大允许数据量 适当增加x,y的值. 解决办法:设置...

mysql SELECT FOR UPDATE 语句用法详解

mysql SELECT FOR UPDATE 语句用法详解
以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE READ,在SELECT 的读取锁定主要分为两种方式: SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE 这两种方式在事务(Transaction) 进行当中SELECT 到同一个数据表时,都必须等待其它事务数据被提交(Commit)后才会执行。而主要的不同在于LOCK IN SHARE MODE 在有一方事务要Update 同一个表单时很容易造成死锁 。 简单的说,如果SE...

mysql中INSERT INTO… ON DUPLICATE KEY UPDATE用法

mysql中INSERT INTO… ON DUPLICATE KEY UPDATE用法
MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法,使得原本需要执行3条SQL语句,SELECT,INSERT,UPDATE,缩减为1条语句即可完成. 例如ipstats表结构如下: CREATE TABLE ipstats (    ip VARCHAR(15) NOT NULL UNIQUE,    clicks SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0'  &n...

mysql中sum float类型出现小数点解决方法

mysql中sum float类型出现小数点解决方法
有不少朋友会碰到过使用sum示和时如果是float类型的数据就会出现小数点了,那么要如何解决这个问题,下面小编来给各位介绍一下. 方法一:最好的办法是将float字段改为decimal(16,6),具体方法,可设置一个临时字段,结合MySQL的关键字binary进行准确复制等. 方法二:使用binary关键字解决,具体操作为“select sum(binary 字段名(float类型))”. BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进...

MySql按日期查找sql语句详解

MySql按日期查找sql语句详解
在mysql中对时间日期操作的函数有很多,有时我们就希望直接通过sql查询出指定日期的数据了,下面小编来给大家总结一下. 使用DATE_FORMAT方法:SELECT * FROM `ler_items` WHERE DATE_FORMAT(postTime,'%Y-%m')='2013-03' 注意:日期一定要用'',否则没有效果,其它的一些关于mysql日期查找语句,代码如下: mysql> select date_format(DATE_SUB(CURDATE(), INTERVAL 7 DAY),’%y%m%d...

MySQL使用INSERT SELECT 批量插入数据

MySQL使用INSERT SELECT 批量插入数据
使用Insert Select语句插入记录时,必须遵循以下原则,用Select语句选择数据时,不能从被插入数据的表中选择行. 指定插入的表后所包含的字段数目必须与Select语句中返回的字段数目相同,指定插入的表后所包含的字段数据类型必须与Select语句中返回的字段数据类型相同或系统可以自动转换,代码如下: INSERT INTO ler_items( classid, title, address, zipcode ) SELECT classid, title, address, zipcode FROM le...

MySQL查询字符串中包含字符的记录

MySQL查询字符串中包含字符的记录
本文章来给各位同学介绍一下关于MySQL查询字符串中包含字符的记录一些常用方法,这里包括有REGEXP、FIND_IN_SET、Like有需要了解的朋友可进入参考. REGEXP,例1.查询字段中包含非英文的数据,代码如下: SELECT * FROM `m_user` WHERE `emp_no` REGEXP '[^ -~]' =1 列2.这样能把所有不含英文的都搞出来,代码如下: SELECT * FROM table WHERE name NOT REGEXP '[a-zA-Z0-9]+' 当然除了regexp之外还可以使用FIND...

mysql获取字符串长度函数(CHAR_LENGTH)

mysql获取字符串长度函数(CHAR_LENGTH)
length:是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符 CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符,一个多字节字符算作一个单字符。对于一个包含五个二字节字符集,LENGTH()返回值为 10,而CHAR_LENGTH()的返回值为5. CHARACTER_LENGTH(str) CHARACTER_LENGTH()是CHAR_LENGTH()的同义词. BIT_LENGTH(str) 返回2进制长度. 例如:可以查出用户名长度少于6个字符的用户列表. ...

mysql取随机数据慢优化方法

mysql取随机数据慢优化方法
前天因为工作需要我把从一个5W记录的数据库中随机抽取几条记录了,这里我是直接使用mysql rand by函数来直接,几千条记录没关系,但如果到了几万条感觉要几秒,这个就很慢了,下面小编与大家一起来看看mysql 取随机数据慢优化过程. MySQL很多时候需要获取随机数据,举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是: SELECT * FROM tablename ORDER BY RAND() LIMIT 1 但是,后来我查了一下MYSQL的...

MYSQL错误:Out of memory (Needed 1046596 bytes)

MYSQL错误:Out of memory (Needed 1046596 bytes)
Out of memory根据我们对英文了理解是超出的内存空间,也就是说你mysql占用了大量的内存了,或是没有配置好,下面小编来给各位同学介绍一下. MYSQL内存设置问题,可调整tmp_table_size大小解决,增大query_cache_limit 的值,还有max_heap_table_size和tmp_table_size的值. 因为我们的存储过程中用了好多的预处理语句,而且语句的结果都是非常大的,起初我的结果,代码如下: mysql> show variables&...

mysql获取自增id方法总结

mysql获取自增id方法总结
有时我们需要把刚保存的记录ID返回进行其它操作,下面小编来给大家整理了mysql获取自增id几种方法,希望此方法对各位同学有所帮助. 方法一,代码如下: SELECT TABLE_ROWS FROM information_schema.tables WHERE table_name='game' AND table_schema = DATABASE(); 在php中用法,php代码示例,代码如下: <?php    $sql="show table status where name ='members'"...

mysql(AUTO_INCREMENT)自增ID的起始值修改与设置

mysql(AUTO_INCREMENT)自增ID的起始值修改与设置
在mysql中很多朋友都认为字段为AUTO_INCREMENT类型自增ID值是无法修改,其它这样理解是错误的,下面我来介绍mysql自增ID的起始值修改与设置方法. 通常的设置自增字段的方法,创建表格时添加如下代码: create table table1(id int auto_increment primary key,...) 创建表格后添加:alter table table1 add id int auto_increment primary key 自增字段,一定要设置为primary key. 例,许多时候希望table中数据的i...

mysql获取随机数据问题总结

mysql获取随机数据问题总结
在mysql中获取随机数据方法很简单只要使用order by rand()即可了,但是如果你是百万级数据量,使用order by rand()获取随机数据你会等死去,下面我来介绍具体的解决办法. 1.order by rand() 数据多了极慢,随机性非常好,适合非常小数据量的情况,代码如下: SELECT * FROM table_name AS r1 JOIN (SELECT (ROUND(RAND() * (SELECT ABS(MAX(id)-MIN(id)-$limit) FROM table_name))+(SELECT MIN(id) from table_nam...

MYSQL 多表查询、删除、更新一些sql语句

MYSQL 多表查询、删除、更新一些sql语句
本文章来给各位同学介绍一下MYSQL 多表查询、删除、更新一些sql语,如果你有需要可进入参考一下. 例,代码如下: SELECT cat.`name` , class.`title` FROM `cat` , `class` WHERE cat.`id` = class.`cat` AND cat.`id` =2 LIMIT 0 , 30 DELETE cat, class FROM cat, class WHERE cat.`id`=class.`cat` AND cat.`id`=1 多表更新:在 MySQL 3.23 中,你可以使用 LIMIT # 来确保只有给定的记录行数目被更改,如果一...

Linux自动备份MySQL数据库脚本代码

Linux自动备份MySQL数据库脚本代码
下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行,在脚本中可设置需要备份的数据库表清单,并且会将备份文件通过gzip压缩,需要注意的是,这段脚本仅适用数据一致性要求不高的环境,代码如下: #!/bin/bash     mysql_pwd="password"    mysql_dump="/usr/local/mysql/bin/mysqldump"    cur_year=$(date +"%...

Fedora16通过yum源安装MySQL

Fedora16通过yum源安装MySQL
最近站长的笔记本刚刚换上了Fedora 16,通过yum安装MySQL时遇到了些问题,搜索了几个国内的网站,几乎都不对路,最后还是在国外的网站上找到了正确的方法,下面分享一下. 1.首先,通过yum源安装MySQL. yum install mysql mysql-server. 2.启动MySQL,并设置MySQL随系统启动. systemctl start mysqld.service. systemctl enable mysqld.service. 需要注意的是上面所有操作应以root身份执行.

定时处理MySQL超时Locked进程脚本

定时处理MySQL超时Locked进程脚本
最近一段时间,我刚刚进入一家新公司,并接手了这里的一个站点,由于这个站点的架构设计不太合理,导致MySQL的压力始终很大,经常出现超时的Locked进程,于是编写了一段Linux的Shell脚本来定时kill掉这些进程. 脚本代码如下: #!/bin/bash     mysql_pwd="xxxxxx" #mysql的root密码     mysql_exec="/usr/local/mysql/bin/mysql"    tmp_dir="/tm...

Mysql5.5 InnoDB存储引擎设置

Mysql5.5 InnoDB存储引擎设置
环境为CentOS系统,1G内存,Mysql5.5.30,在/etc/my.cnf内添加如下代码: skip-external-locking    skip-name-resolve    max_connections = 1024    query_cache_size = 16M    sort_buffer_size = 1M    table_cache = 256    innodb_buffer_pool_size = ...

利用MySQL中InnoDB数据文件中的恢复数据

利用MySQL中InnoDB数据文件中的恢复数据
1.简述恢复原理 因为文档中较为详细的描述,这里只简单说明。所有InnoDB的数据都是索引的方式组织的,而且所有的数据都是存储在16KB的数据块中。恢复的过程分几步,分解所有数据文件为单个16KB大小的页面,根据每个页面的标记的数据起点开始尝试匹配,如果与给定表定义的size合适,认为匹配成功,则输出记录。 2.并行的恢复 数据恢复通常是争分夺秒的,PDRTI工具本身是一个基础工具,如果使用该工具做做串...

mysql使用utf8的sql文件出现乱码问题

mysql使用utf8的sql文件出现乱码问题
今天上了一个站,打开首页全是乱码,在浏览器上调了几次编码字符,都不对,问了下php开发才知道原来sql文件里使用的是utf8的编码,而我的mysql没有专门指定使用那种编码,为了不影响到其他站的运行,专门针对这一个站使用utf8编码吧. 系统:centos 5.x,mysql版本:mysql 5.5.x 1.先在mysql里创建utf8的数据库,代码如下: CREATE DATABASE `slogra` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 光是创建utf8...