昨天遇到一个字符串编码的问题,mysql5.1 版本不支持 emoji 表情字符的存储,出现了如下的错误:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column '***' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581)
此异常的原因:
字符集不支持的异常。因为 UTF-8 编码有可能是两个、三个、四个字节,其中 Emoji 表情是 4 个字节,而 MySQL 的 utf8 编码最多 3 个字节,所以导致了数据插不进去。
解决方案:
参考网上的资料 ,大部分的解决方法是修编编码为 utf8mb4 的编码,但是只有 mysql 5.5 以上的版本才支持此编码格式,所以要对数据库进行升级。
服务器的系统是 CentOS 6.5 , 在安装数据库的时候就遇到各种问题,网上的文章大都是彼此复制,复杂且没有办法解决我所遇到的问题,所以写这篇文章记录一下。
说一下需要的东西吧:
mysql 安装包:点击下载
实际上,我只需要在服务器上安装一个 mysql server 就可以,下载此包解压后,配置一下账号密码,创建一下数据库,并开放远程访问端口即可。
第一步、安装 mysql
直接上命令吧:
//下载mysql安装包,毕竟服务器的速度比本地快的多,直接wget一下就好
wget http://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.27-linux-glibc2.5-i686.tar.gz
//解压到当前目录,解压后会生成一个同名的文件夹
tar zxvf mysql-5.6.27-linux-glibc2.5-i686.tar.gz
//将解压文件拷贝到本地账户的文件夹中
cp mysql-5.6.27-linux-glibc2.5-i686 /usr/local/mysql -r
//添加组、用户等等,这一步操作网上的安装教程都有,我之前已经添加过了,在此次安装中就没有添加
groupadd mysql
useradd -r -g mysql mysql
//进入本地mysql文件夹
cd /usr/local/mysql
//将修改权限改成mysql用户
chown -R mysql:mysql ./
//安装
./scripts/mysql_install_db --user=mysql
//安装完成之后 将支持文件拷贝到/etc/init.d/mysql下
cp support-files/mysql.server /etc/init.d/mysql
至此 ,基本就算安装完成了 ,下面是检验安装成功与配置了
检验安装与配置 MySQL
检验安装的方法,最简单的就是直接启动 mysql
service mysql start
看到 SUCCESS 就是成功了,如果出现错误,就去搜一下对应的解决方案。
设置密码
./bin/mysqladmin -u root password '********'
开放 3306 端口
vi /etc/sysconfig/iptables
//添加以下内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
//重新启动iptables
service iptables restart
//修改my.cnf,在[mysqld]下添加以下内容
skip-name-resolve
skip-grant-tables
登陆 mysql
cd /usr/local/mysql/bin
//登陆mysql
./mysql -u root -p
//输入刚才设定的密码,登陆
数据库账户授权远程连接
登陆 mysql 之后,通过 sql 语句进行授权:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
说明:username – 你将创建的用户名, host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用 localhost, 如 果想让该用户可以从任意远程主机登陆,可以使用通配符 %. password – 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登 陆服务器.
好了 至此,数据库安装配置完成,用 Navicat 链接一下:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于