mysql从5.1.63升级到5.6.20出现的问题

为了提高mysql主从复制的效率,将mysql 从5.1.63升级到5.6.20,升级过程非常顺利,但是在数据的迁移过程中出现了问题,

第一次数据迁移直接使用的是数据文件迁移的方法:停掉原5.1.63的数据库服务,将数据库的物理文件直接拷贝到5.6.20的数据库的data目录下,启动5.6.20的数据库服务,启动非常正常,但在打开前端应用时,好多数据都不能正常呈现,进入数据库查看有不少数据缺失,应该是高版本中对低版本的数据文件的识别存在问题,所以从低版本向高版本进行数据迁移不能使用直接拷贝数据文件的方法。直接拷贝文件时候同一个大版本的情况下。

第二次迁移,由于第一次迁移失败,所以第二次只好直接把数据DUMP出来,使用工具mysqldump -uroot -proot database >./data.isql 将整个要迁移的库的数据备份出来,生成data.isql,这个过程要看数据库的大小,时间不一,等数据DUMP出来之后,使用命令mysql -uroot -proot  database < ./data.isql,将备份文件导入到5.6.20数据库中。一切正常,大家前端应用,数据显示也非常正常,就在准备收工的时候,问题出现,在前端应用中不能添加数据,提示添加失败。

将前端应用中添加数据过程中的DEBUG信息打印出来,发现是由于某个列的值(查看该字段的属性是允许null空值存在)没有给导致出错,为啥之前在5.1.63中没有这个问题,查看5.6.20数据库的配置文件发现了问题,该版本数据库的配置文件默认加了 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  这个配置,其中参数STRICT_TRANS_TABLE,表示是要对SQL的语句进行严格校验,是不允许有空值存在,必须要给字段赋值,而低版本的5.1.63数据库中默认是没有参数,也就是不严格校验你的SQL语法。

解决问题的方法很简单,就是将STRICT_TRANS_TABLES 这个参数去掉,或者将这个sql_mode整个参数的赋值注释掉,重启数据库就可以。

本次数据库的版本升级和数据迁移也是一波三折,好歹算迁移成功。

时间: 2024-12-15 16:25:00

mysql从5.1.63升级到5.6.20出现的问题的相关文章

Centos MySQL 5.7安装、升级教程

MySQL 5.7安装.升级笔记分享: 卸载当前的 MySQL 查看当前 MySQL 版本: ? 1 2 [[email protected] ~]# mysql -V mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (i386) using readline 5.1 停止 MySQL 服务 ? 1 2 [[email protected] ~]# service mysqld stop Stopping mysqld:      [ O

关于阿里云centos 2.6下手机表情输入后无法保存到mysql数据库的问题调研及mysql版本从5.1升级到5.7的全过程纪要

近日在开发手机app的评论功能时,输入表情文字,保存后提示数据库保存失败.错误日志片段如下 caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for column 'CONTENT' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) 经过调研发现,这个问题是mysql的ut

使用percona-xtrabackup-2.0.8将MySQL从5.1.73升级到5.6.36

1.安装xtrabackup cd /usr/local/ tar xvf percona-xtrabackup-2.0.8-587.tar.gz mv percona-xtrabackup-2.0.8 xtrabackup vim /root/.bash_profile PATH=$PATH:$HOME/bin:/usr/local/xtrabackup/bin source /root/.bash_profile 2.全量备份mysql 5.1.73数据库 innobackupex --us

suse 11 mysql 如何从5.1升级到5.5

1. 查看已安装的安装包 rpm -qa | grep -i mysql MySQL-server-5.0.67-1.sles11 libqt4-sql-mysql-4.6.2-1.6.11 libmysqlclient15-5.0.67-13.20.1 php5-mysql-5.2.6-50.24.1 MySQL-client-5.0.67-1.sles11 libmysqlclient_r15-5.0.67-13.20.1 2. 删除已有的mysql rpm -e MySQL-server-

centOS 6.5下升级mysql,从5.1升级到5.6

转载:https://www.cnblogs.com/vickygu2007/p/5066409.html #mysqldump -uroot -p --all-databases > databases.sql #service mysqld stop #yum remove mysql mysql-* #rpm -qa ¦ grep mysql #yum remove mysql mysql-server mysql-libs compat-mysql51 #yum list install

在CentOS上把MySQL从5.5升级到5.6(转)

http://www.th7.cn/db/mysql/201408/66064.shtml 在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5.5.28升级到5.6.19的过程. 1. 概述 在我做的一个项目中,最近我对生产服务器上的一系列系统软件进行了升级,包括git.nginx.MySQL和PHP.这篇文章讲的是升级MySQL的过程,其他软件的升级将在其他文章中介绍. 在我加入这个项目之前,网络服务器MySQL已经安装设置好了,我只是

将MySQL 5.1升级到MySQL 5.5的步骤

mysql基本信息 1.安装目录/usr/local/mysql 2.数据目录 /home/mydb 3.配置目录 /etc/my.cnf 4.启动脚本/etc/init.d/mysql 升级前操作 1.停止线上业务,备份数据 备份:mysqldump -uroot -p –all-databases >/home/mysql/meng/databk_20150207.sql 停止:/etc/init.d/mysql stop #备份数据目录:mkdir /home/mydb5.1 #cp /h

CentOS6.x升级MySQL版本5.1到5.6

原文地址: http://blog.csdn.net/iefreer/article/details/38366575 有一些虚拟机.云主机提供商仍然使用的是老版本的安装套件.预装的应用软件版本很低. 比如 techbrood.com 使用的云服务器,其中MySQL预装版本为老版本5.1.x.而最新的MySQL版本在性能.功能.安全性等方面都有了很多的改进. 要从最新版本获益,你需要把现有系统升级到5.5+(最新的版本是5.7),我保守一点,升级到5.6.20. 有相关测试数据说明从5.1到5.

MySQL Study之--Percona server 5.5升级5.6

MySQL Study之--Percona server 5.5升级5.6 系统环境:      操作系统:CentOS_6.5(64)            MySQL:   Percona server 5.5(5.6) 一.升级的目的 为什么MySQL升级是必须的? 原因有很多,比如:为了使用新增的特性,基于性能方面的考量, 修复的bug. 但是在没有充分的测试以前就应用到你的应用中是非常危险的, 因为升级可以能会让你的应用不能正常运作- 也可能引起性能的问题. 此外, 我建议你关注MyS