昨天遇到一个字符串编码的问题,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 链接一下:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于