mysql数据库迁移到sqlserver问题解决

背景:
更换数据库,需要将Mysql数据库数据迁移到Sqlserver数据库中.
工具:
推荐使用Navicat,因为很多步骤可以图形化,相对简便
在这里插入图片描述

迁移过程:

  1. 检查Mysql的数据库,确保是完整一套数据库,如图所示,该数据库中包含了MES系统用的所有数据库

  2. 在这里插入图片描述

  3. Navicat连接SQLSERVER(服务器上已部署数据库,默认使用SQLSERVER验证登录,如图:
    4在这里插入图片描述

注意:如果一直连不上,需要到本地SQLSERVER里修改密码策略,或者强制修改密码,重新登录
5. 在sqlserver下新建数据库,可以在本地服务器sqlserver管理器使用数据库语句新建或者使用navicat新建,新建的数据库名须与Mysql下的数据库名保持一致。如图:
在这里插入图片描述
4.Navicat打开工具选择数据传输,如图:


5.在数据传输界面,左面是传输源,右面为传输目标,设置完后,点击开始,如图:
在这里插入图片描述

这里我们要注意选择的数据库名两边一般是保持一致的,数据库对象可以勾选必要的表传输,在目标里模式一定要选择dbo,这样表会被迁移到dbo下,否则在后期开发和测试中 数据库不容易连接或者会查询报错,错误:”xx字段无效”

6.顺利的话我们可以在sqlserver中看到我们迁移的表数据,如图

重点讲下这两天在库迁移过程中遇到的问题和解决方法:
迁移数据遇到错误时,一定要先备份报错的数据表,在备份的数据表上分析和解决问题。
a. 带索引迁移问题
表里如果带索引的话,传输时会报索引错误,可以将索引先去除(在备份的数据里),然后传到SQLserver,在sqlserver里将索引添加进去,表多的话,步骤比较繁琐,需要耐心去做。
b. 从字符串转换日期和/或时间时,转换失败问题

在遇到表里有时间的字段的数据迁移时,报这个错频率非常高,尝试很多方法无法解决,后来MYSQL上对这个错误表数据进行分析,将其简化为一条数据,如图,写一条插入语句到sqlserver,如下:INSERT INTO [mes_device_check_bom_relation] ([directory_id], [content_id], [data_center_id], [create_date], [update_date]) VALUES (N’6’, N’188’, null, 2019-03-13 09:49:09, 0000-00-00 00:00:00),同样报这个错误,将0000-00-00 00:00:00删除,再插入,插入成功。最后发现是数据扥问题,也就是说mysql可以识别0000-00-00 00:00:00的这个时间数据而sqlserver无法识别,所以会报错。因为不是合法有效的数据,只要将其改为合法数据即可解决。

c. Source data type [bit] not supported 错误
在迁移license数据库时报的这个错误,这个是布尔类型,在迁移时Sqlserver不支持该类型,需在原表改为其他类型后传输,待传输结束后,在Sqlserver里改为bit类型。值得注意的是,在sqlserver里 只认0,1,作为布尔值,如果mysql使用其他值作为布尔值得话,在后期测试中sqlserver应该会报错或者判断错误。
d. 索引重复问题
在sqlserver上添加索引会报索引重复,要检查下数据,是否有索引字段是否有NULL和重复项,有则需要改正重新添加索引

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值