2014-6-10 15:25 Tuesday  

1. 只按日期排序,忽略年份
> select date, description from table_name order by month(date),dayofmonth(date);
注意:单纯使用dayofyear来排序会导致错误,如2-29与非闰年的3-1日同等级

 

2. 排序点分式IP
> se...

阅读全文>>

2014-5-14 9:27 Wednesday  
SELECT * FROM table WHERE id IN(5,3,7,1) ORDER BY FIELD(id,5,3,7,1)
记录按照5,3,7,1的顺序返回
如果没有ORDER BY FIELD将按 1,3,5,6的顺序返回

阅读全文>>

在MySQL下运行完下面这个建表语句后。 如何从数据字典中,检索出这个表的字段的相关信息?

DROP TABLE IF EXISTS test_table;

CREATE TABLE test_table(
  Test_ID int NOT NULL    AUTO_INCREMENT    PRIMARY &nb...

阅读全文>>

2013-9-25 15:03 Wednesday  

今天我在开启MYSQL慢查询的时候,MYSQL服务死活不能启动,报错:

[ERROR] MySQL: unknown variable 'log-slow-queries=D:/ProgramData/MySQL/phpec_org-slow.log'

半天找不到原因,后面经过不断百度,发现原来MYSQL5.6版以上已经取消了log-slow-queries这个参数,改为slow-query-lo...

阅读全文>>

2013-4-26 19:51 Friday  

myql优化,启动mysql缓存机制,实现命中率100%

配置你的mysql配置文件:主要是配置[mysqld]后面的内容。

1,优化远程连接速度。


在[mysqld]下面添加skip-name-resolve

skip-name-resolve

选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。

2,设置连接数,mysq...

阅读全文>>

2013-4-16 9:21 Tuesday  

对于针对字符串位置的操作,第一个位置被标记为1。
ASCII(str)
返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。
mysql> select ASCII('2');
    -> 50
mysql> select ASCII(2);
  &nb...

阅读全文>>

2012-9-26 8:19 Wednesday  

mysql数据库新加了几个表,结果只有frm文件存在,如果直接复制到别的电脑,这几个表是提示错误的,为什么呢?查了下资料:frm、MYI、MYD分别对应MyISAM表的表结构\索引\数据文件。

我遇到的情况跟表引擎类型有关,我是用innodb,结果出现了这样的情形,MYSQL的默认DB引擎是innodb的时候,innodb表没有没有myd和.myi,其数据文件对应于ibdata1

解决办法,更改表...

阅读全文>>

命令行可以正常登录,但是用navicat连接就是不行,百度后有说增加或是修改bind-address=0.0.0.0这样的,但是对我的没有效果,重新配置mysql的时候,启用tcp连接,结果就正常了,有时候,小细节真的会让你很杯具。。

阅读全文>>

执行,就会报 The definition of table 'table1' prevents operation UPDATE on table 'table2'

update table2 set item = replace(item,'A27-','A28-')
where id in(
select id from table1 where
 item like ...

阅读全文>>

2012-3-25 20:59 Sunday  

GROUP_CONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起使用。

语法:

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]...

阅读全文>>

2012-3-4 20:35 Sunday  
(1)、back_log: 要求 MySQL 能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。

back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加 它,换句话说,这值对到来的TCP/IP连接的侦听队列的大小...

阅读全文>>

2012-3-4 19:56 Sunday  
[mysqld]
port           = 3306
socket         = /tmp/mysql.sock
# 设置mysql的安装目录
basedir=F:\phpecorg\MySql Server 51
# 设置mysql数据库的数据的存放目录,必须是data,或者是\\xxx-data
datadir=F:\phpecorg\MySql Server 51\data
#innodb_log_arch_dir 默认datadir
#innodb_log_group_home_dir  默认datadir
# 设置mysql服务器的字符集,默认编码
default-character-set=utf8

#连接数的操作系统监听队列数量,如果经常出现“拒绝连接”错误可适当增加此值
back_log = 50
#不使用接听TCP / IP端口方法,mysqld通过命名管道连接
#skip-networking
# 最大连接数量

阅读全文>>

1、应用程序(比如PHP)长时间的执行批量的MYSQL语句。
最常见的就是采集或者新旧数据转化。
解决方案:

my.ini文件中添加或者修改以下两个变量:
wait_timeout=2880000
interactive_timeout = 2880000


关于两个变量的具体说明可以google或者看官方手册。
如果不能修改my.cnf,则可以在连接数据库的时候设置CLIENT_INTER...

阅读全文>>

2012-1-30 18:23 Monday  
mysqlcheck -A -r -c -p
输入密码来修复就可以了
    -A    检查所有数据库中的所有表
    -c    检查表的错误
    -r    可以修复大部分问题的修复(如果不赶时间的话,可考虑-e参数代替)
    -o    优化表(如果表太大,写操作比较频繁的话,可能会花较长时间)
    -p    指定加密码
2012-1-30 18:15 Monday  
查看当前最大连接数:mysqladmin -uusername -ppassword variables |find "max_con" 

MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两个 

方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100   修改为 max_connections=1000 服务里重起MYSQL即可 

方法二:MySQL的最大连接数默认是100客户端登录:mysql -uusername -ppassword 

设置新的最大连接数为200:mysql> set GLOBAL max_connections=200 

显示当前运行的Query:mysql> show processlist 

显示当前状态:mysql> show status 

退出客户端:mysql> exit 

查看当前最大连接数:mysqladmin -uusername -ppassword variables 



方法三:以centos 4.4 下面的mysql 5.0.33 手工编译版本为例说明: 

  vi /usr/local/mysql/bin/mysqld_safe 

  找到safe_mysqld编辑它,找到mysqld启动的那两行,在后面加上参数 : 

  -O max_connections=1500 

  具体一点就是下面的位置: 

  用红字特别说明: 

  then $NOHUP_NICENESS $ledir/$MYSQLD 

  $defaults --basedir=$MY_BASEDIR_VERSION 

  --datadir=$DATADIR $USER_OPTION 

  --pid-file=$pid_file 

  --skip-external-locking 

  -O max_connections=1500 

  >> $err_log 2>&1 else 

  eval "$NOHUP_NICENESS $ledir/$MYSQLD 

  $defaults --basedir=$MY_BASEDIR_VERSION 

  --datadir=$DATADIR $USER_OPTION 

  --pid-file=$pid_file 

  --skip-external-locking $args 

  -O max_connections=1500 >> 

  $err_log 2>&1" 

  保存。 

  # service mysqld restart 

  # /usr/local/mysql/bin/mysqladmin -uroot -p variables 

  输入root数据库账号的密码后可看到 

  max_connections 1500 即新改动已经生效。 

  还有一种方法, 

  修改原代码: 

  解开MySQL的原代码,进入里面的sql目录修改mysqld.cc找到下面一行: 

  {"max_connections", OPT_MAX_CONNECTIONS, 

  "The number of simultaneous clients allowed.", (gptr*) amp;max_connections, 

  (gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1, 

  0}, 

  把它改为: 

  {"max_connections", OPT_MAX_CONNECTIONS, 

  "The number of simultaneous clients allowed.", (gptr*) amp;max_connections, 

  (gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1, 

  0}, 

  存盘退出,然后./configure ;make;make install可以获得同样的效果。