Solo  当前访客:3 登录 注册

喧哗博客-http://blog.xuahua.com

繁华过后的沉寂--技术经验分享
浏览次数: 95,037    文章总数: 91    评论总数: 3
标签:

一个查询SQL的优化-mysql

1,查询MYSQL

select max(createtime)
from t_mem_login_log
where id<(
SELECT MAX(id)
FROM t_mem_login_log
WHERE userid= 74
and flag= 1)
and userid= 74
and flag= 1

查询目的,查询当前用户当前登录的前一条最大的创建时间。比如

1 2 3 4 5 分别代表五条记录,5 为最大即最后一条插入数据,此时,需要取出比5小的最大记录4 。

 优化后的sql改写为

SELECT createtime
FROM `t_mem_login_log`
where userid= 74
and flag= 1
order by createtime desc
limit 1,1;

Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='

环境:mysql 数据库

字符集 utf8

建表sql

CREATE TABLE products (
    productID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    title VARCHAR(104) NOT NULL,
    picturePath VARCHAR(104) NULL,
    pictureThumb VARCHAR(104) NULL,
    creationDate DATE NOT NULL,
    closeDate DATE NULL,
    deleteDate DATE NULL,
    varPath VARCHAR(104) NULL,
    isPublic TINYINT(1) UNSIGNED NOT NULL DEFAULT '1',
    PRIMARY KEY (productID)
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_unicode_ci;

现象,运行二表关联查询,报出异常错误如下

Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='

 

经过网上查找,解决方法。

ALTER TABLE products CHARACTER SET utf8 COLLATE utf8_general_ci;

以此为记 。。。

 

centos+php5.6+pdo扩展

centos+php5.6+pdo扩展

 

链接 : http://blog.xuahua.com/articles/2016/05/09/1462762206356.html

假设php目录为/usr/local/php
mysql目录为/usr/local/mysql
1. 进入PHP源码包ext/pdo目录


cd ext/pdo

2. 执行/usr/local/php/bin/phpize[假设PHP的安装目录为/usr/local/php]


/usr/local/php/bin/phpize

3. 配置扩展pdo


./configure --with-php-config=/usr/local/php/bin/php-config --enable-pdo=shared

4. 编译 && 安装pdo


make && make install

成功则出现
Installing shared extensions: /usr/local/php//lib/php/extensions/no-debug-non-zts-20060613/
Installing header files: /usr/local/php//include/php/
Installing PDO headers: /usr/local/php//include/php/ext/pdo/
说明在/usr/local/php//lib/php/extensions/no-debug-non-zts-20060613/目录下生成了pdo.so文件

5. 在PHP源码包中进入pdo_mysql


cd ext/pdo_mysql

6. /usr/local/php/bin/phpize

/usr/local/php/bin/phpize

7. 配置pdo_mysql[假设Mysql的安装目录为/usr/local/mysql]

1
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
8. 编译 安装pdo_mysql

make && make install

centos+编译安装+php5.6+php5.6源码环境 有更新!

一,安装前提

 

因为本人做java开发,对php环境配置不太懂,虽然网上也有yum 安装方式,但其中的配置关系完全不知。

而且因为本身已经在安装好的mysql数据库基础上再装php环境,会导致安装二套mysql,而出现问题(本人折腾快一天时间的体会)。

所以还是使用源码编译安装,过程需要花费不少,而且需要安装不少的插件。

 

二,安装php5.6

 链接 http://blog.xuahua.com/articles/2016/05/09/1462762124848.html 

2.1 安装php前的准备工作

   php 安装目录指定 /usr/local/php

  httpd 安装目录  /usr/local/httpd

  mysql 安装目录 /data/mysql

  mysql.sock 目录是通过mysql配置中指定生成在 /tmp/mysql.sock

 

2.2 源码下载 

源码下载目录 /data/soft
wget http://cn2.php.net/distributions/php-5.6.21.tar.gz

其他需要的插件下载,网上虽然也有,但是有些链接已经失效,下不到,我也是折腾好久才找到。
 
 
 

3,安装编译工具及库文件(使用yum命令安装)

yum install-y apr*autoconf automake bison bzip2 bzip2*cloog-ppl compat*cpp
yum install-y curl curl-devel fontconfig fontconfig-devel freetype freetype*
yum install-y freetype-devel gcc gcc-c++gtk+-devel gd gettext gettext-devel
yum install-y glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel
yum install-y libcom_err-devel libpng libpng*libpng-devel libjpeg*libsepol-devel
yum install-y libselinux-devel libstdc++-devel libtool*libgomp libxml2 libxml2-devel libXpm*libX*
yum install-y libtiff libtiff*makempfr ncurses*ntp openssl nasm nasm*
yum install-y openssl-devel patchpcre-devel perl php-common php-gd
yum install-y policycoreutils ppl telnet t1lib t1lib*wget zlib-devel
 

三. 开始安装

1、安装yasm

1
2
3
4
5
6
7
8
9
cd/home
 
tar zxvf yasm-1.3.0.tar.gz
 
cdyasm-1.3.0
 
./configure
 
make&&makeinstall

 

2、安装libmcrypt

1
2
3
4
5
6
7
8
9
cd/home
 
tar zxvf libmcrypt-2.5.8.tar.gz
 
cdlibmcrypt-2.5.8
 
./configure
 
make&&makeinstall

 

3、安装libvpx

1
2
3
4
5
6
7
8
9
10
cd/home
 
xz-dlibvpx-v1.3.0.tar.xz
tar-xvf libvpx-v1.3.0.tar
 
cdlibvpx-v1.3.0
 
./configure--prefix=/usr/local/libvpx--enable-shared--enable-vp9
 
make&&makeinstall

 

4、安装tiff

1
2
3
4
5
6
7
8
9
cd/home
 
tar zxvf tiff-4.0.3.tar.gz
 
cdtiff-4.0.3
 
./configure--prefix=/usr/local/tiff--enable-shared
 
make&&makeinstall

 

5、安装libpng

1
2
3
4
5
6
7
8
9
10
11
cd/home
 
xz-dlibpng-1.6.16.tar.xz
 
tar-xvf libpng-1.6.16.tar
 
cdlibpng-1.6.16
 
./configure--prefix=/usr/local/libpng--enable-shared
 
make&&makeinstall

 

6、安装freetype

1
2
3
4
5
6
7
8
9
cd/home
 
tar zxvf freetype-2.5.4.tar.gz
 
cdfreetype-2.5.4
 
./configure--prefix=/usr/local/freetype--enable-shared--without-png
 
make&&makeinstall

 

7、安装jpeg

1
2
3
4
5
6
7
8
9
cd/home
 
tar zxvf jpegsrc.v9a.tar.gz
 
cdjpeg-9a
 
./configure--prefix=/usr/local/jpeg--enable-shared
 
make&&makeinstall

 

8、安装libgd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cd/home
 
tar zxvf libgd-2.1.0.tar.gz
 
cdlibgd-2.1.0
 
./configure\
--prefix=/usr/local/libgd\
--enable-shared\
--with-jpeg=/usr/local/jpeg\
--with-png=/usr/local/libpng\
--with-freetype=/usr/local/freetype\
--with-fontconfig=/usr/local/freetype\
--with-xpm=/usr/\
--with-tiff=/usr/local/tiff\
--with-vpx=/usr/local/libvpx
 
make&&makeinstall

 

9、安装t1lib

1
2
3
4
5
6
7
8
9
10
11
cd/home
 
tar zxvf t1lib-5.1.2.tar.gz
 
cdt1lib-5.1.2
 
./configure--prefix=/usr/local/t1lib--enable-shared
 
makewithout_doc
 
makeinstall

 

10、安装php

注意:如果系统是64位,请执行以下两条命令,否则安装php会出错(32位系统不需要执行)

1
2
3
4
5
6
7
8
9
10
11
\cp-frp/usr/lib64/libltdl.so*/usr/lib/
 
\cp-frp/usr/lib64/libXpm.so*/usr/lib/
 
cd/home
 
tar-zvxf php-5.6.5.tar.gz
 
cdphp-5.6.5
 
export LD_LIBRARY_PATH=/usr/local/libgd/lib

 

# 核对每一项安装的路径配置 本人这里的–with-mysql-sock=/tmp/mysqld.sock 有的为 –with-mysql-sock=/tmp/mysql.sock

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysql=/data/mysql \
--with-mysqli=/data/mysql/bin/mysql_config \
--with-mysql-sock=/tmp/mysql.sock \
--with-pdo-mysql=/data/mysql \
--with-gd \
--with-png-dir=/usr/local/libpng \
--with-jpeg-dir=/usr/local/jpeg \
--with-freetype-dir=/usr/local/freetype \
--with-xpm-dir=/usr/ \
--with-vpx-dir=/usr/local/libvpx/ \
--with-zlib-dir=/usr/local/zlib \
--with-t1lib=/usr/local/t1lib \
--with-iconv \
--enable-libxml \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--enable-opcache \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--with-openssl \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--without-pear \
--disable-phar \
--with-gettext \
--enable-session \
--with-mcrypt \
--with-curl \
--enable-ctype \
--with-apxs2=/usr/local/httpd/bin/apxs 
 
 
 
make&&makeinstall
 

上面标志为红的,编译的时候要注意,另外在make 之后还是要运行下 make test 看下是否有error。

四,配置

1 配置 php.ini
cp  php.ini-production /usr/local/php/etc/php.ini#复制php配置文件到安装目录
 
rm -rf /etc/php.ini#删除系统自带配置文件
 
ln -/usr/local/php/etc/php.ini  /etc/php.ini    #添加软链接到 /etc目录
 
cp  /usr/local/php/etc/php-fpm.conf.default  /usr/local/php/etc/php-fpm.conf  #拷贝模板文件为php-fpm配置文件
 
ln -/usr/local/php/etc/php-fpm.conf  /etc/php-fpm.conf  #添加软连接到 /etc目录
 
  2 配置php-fpm 
 
vi  /usr/local/php/etc/php-fpm.conf  #编辑
 
user=www #设置php-fpm运行账号为www
 
group=www #设置php-fpm运行组为www
 
pid=run/php-fpm.pid #取消前面的分号
 
:wq!#保存退出
 
  设定开机启动
 
cp   sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm  #拷贝php-fpm到启动目录
 
chmod +/etc/rc.d/init.d/php-fpm   #添加执行权限
 
chkconfig php-fpm on#设置开机启动
 
 
3 pdo扩展配置

链接地址  http://blog.xuahua.com/articles/2016/05/09/1462762206356.html


mysql5.7在windows上面的布署安装

一,windows安装布署
 
1,MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的。如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提示),一般MySQL将会安装在C:\Program Files\MySQL\MySQL Server 5.6 该目录中;zip格式是自己解压,解压缩之后其实MySQL就可以使用了,但是要进行配置
 
2,配置环境变量:
 
 

我的电脑->属性->高级->环境变量

选择PATH,在其后面添加: 你的mysql bin文件夹的路径 (如:C:\Program Files\MySQL\MySQL Server 5.6\bin )

PATH=.......;C:\Program Files\MySQL\MySQL Server 5.6\bin (注意是追加,不是覆盖)

3,修改一下配置文件

 

mysql-5.6.1X默认的配置文件是在C:\Program Files\MySQL\MySQL Server 5.6\my-default.ini,或者自己建立一个my.ini文件,

在其中修改或添加配置(如图): 

[mysqld] 

basedir=C:\Program Files\MySQL\MySQL Server 5.6(mysql所在目录) 

datadir=C:\Program Files\MySQL\MySQL Server 5.6\data (mysql所在目录\data)

4,以管理员身份运行cmd

输入mysqld -install(如果不用管理员身份运行,将会因为权限不够而出现错误:Install/Remove of the Service Denied!) 

net start mysql

net stop mysql


 

三,liunx修改重置mysql root密码

 

1,停止 /etc/init.d/mysql stop

> mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

>mysql -uroot mysql

>update user set password=PASSWORD('root123456') where user='root';

>flush privileges;

>quit;

>/etc/init.d/mysql  restart

 

四 windows修改重置 mysql root密码

Windows:

1. 管理员登陆系统,停止mysql服务或者结束mysqld-nt进程
2. 进入命令行,来到mysql的安装目录.假设安装目录为 d:\mysql\ , CMD进入命令行
3. 运行 d:\mysql\bin\mysqld start--skip-grant-tables  --skip-networking  启动mysql,关闭权限的检查

4,>mysql -u root 

5,alter user 'root'@'localhost' identified by 'root123456'; flush privileges;

6. 重新启动mysql服务

 

 

五,创建数据库

UTF-8

 

CREATE DATABASE blog DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

GBK

create database blog DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
 
六,创建用户
 >create user 'test'@'%' identified by '123456';
 
七,赋权限

grant all privileges on *.* to joe@localhost identified by '1';

    flush privileges;

liunx下mysq5.7-布署安装

一,liunx安装布署
 
>wget 
>tar mysql-5.7.17-linux-glibc2.5-i686.tar.gz
>cp -r  mysql-5.7.17-linux-glibc2.5-i686 /usr/local/mysql 
   
 2,   加系统mysql组和mysql用户:
>groupadd mysql
>useradd -r -g mysql mysql
> cd /usr/local/mysql

 3,  创建数据库数据存储目录

>mkdir /usr/local/mysql/data

4, 修改当前目录拥有者为mysql用户

> chown -R mysql:mysql ./

5, 修改配置文件 mysql.server

>vi support-files/mysql.server

配置 basedir=/usr/local/mysql

      datadir=/usr/local/mysql/data

log-err=/usr/local/mysql/logs

6,添加开机启动:执行命令

>cp support-files/mysql.server /etc/init.d/mysqld

修改配置文件

  >suport-files/my-default.cnf

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

port=3306

innodb_buffer_pool_size = 128M

character_set_server=utf8
init_connect='SET NAMES utf8'
 
7,复制文件到 安装目录
>cp support-files/my-default.cnf ../my.cnf
 
8 ,此步骤必须先执行,初始化数据库
>cd /usr/local/mysql/bin
>mysqld --intialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &
 

9 ,启动mysql服务:

>/etc/init.d/mysqld --user=mysql

看到mysql服务说明启动成功

>ps -ef|grep mysql

 

公告

喧哗博客--繁华过后的沉寂--技术经验分享^-^
Copyright (c) 2009-2019, b3log.org & hacpai.com