作者yumemi2001 (梦见)
看板CodeJob
标题[发案] MYSQL 5.5.54转移至8.0.20问题排除
时间Fri Aug 21 23:31:50 2020
发案人:邱先生
联络方式1:站内信/LINE/电话
联络方式2:
所在地区 :台南
有效时间:到问题解决为止
专案说明:目前将一套用php所写的资料收集系统转移至新主机上遇到一些问题,
原本的架构是mysql5.5.54 新主机是mysql 8.0.20 转移过去之後发
现一些问题,在汇入资料时如果使用utf8格式则栏位会有偏移的状况
如果不使用utf8编码的方式汇入则正常,这个问题在mysql5的时候不
会发生,但是因为对资料库很不熟,所以想上来徵求帮手解决问题。
预算:请报价
接案者要求:可以以时薪付费,或者了解一下问题之後用一笔费用来报价,主要
希望能解决问题,请来信讨论。谢谢
附注:
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.161.109.137 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/CodeJob/M.1598023912.A.E09.html
1F:推 francisko: 原来编码是 big5? 08/21 23:55
2F:→ ailu: 先汇入再转成UTF-8不行吗? 08/26 13:42
感谢版上的各位来信,这几天的测试後发现问题不是在mysql上 状况说明如下
因为这两天反覆确认问题发生的原因,目前确定造成偏移的原因不是MYSQL而是PHP7之後
的版本造成的,原本的使用的PHP版本是5.6.31 MYSQL是5.5.54在汇入资料时因为我们都
是使用中文作为某些栏位的纪录,将档案存成CSV的UTF8模式汇入资料都没有问题,正常
的情况如下图显示,文字与栏位都正常。
https://imgur.com/6gilAmH
转移到新的伺服器後发现了相同的汇入资料会发生栏位偏移的问题,
汇入後会变成下图这样的情况,
https://imgur.com/qIUQ1dN
在pharmacy_name会塞入两个数值,原本後面的数值会往前偏移,但如果把CSV档案存成
ANSI模式则汇入资料就正常,但是中文显示的部分会变成乱码,就像下图一样
https://imgur.com/61xdPPc
新的伺服器PHP是7.4.9 MYSQL是8.0.21,为了排除问题我做了一些测试,後来发现将PHP
降回5.6.31的时候就不会出现这样的问题,所以是PHP7造成汇入资料会偏移的问题。
希望有类似经验能处理相关问题的乡民朋友们来信讨论并告知费用,谢谢
※ 编辑: yumemi2001 (140.116.93.140 台湾), 08/27/2020 13:31:07
3F:→ magus: 用工具汇出成.sql档再汇入试试,请在测试环境执行,这个php 09/16 22:12
4F:→ magus: 跟php比较没关系,纯粹是汇入时的问题,也可考虑换工具汇入 09/16 22:13
5F:推 djmax: 问题解决了吗? 还有再找人吗? 我可以跟你保证不是php7的问 09/22 01:16
6F:→ djmax: 题, php5.x->7.4, mysql5.x->8.0 我遇到的问题都解决过 09/22 01:18
7F:→ djmax: 含php第三方套件升级後遇到的问题, mysql安全验证的问题等 09/22 01:19
8F:→ guanting886: 没空 不过可以跟你说个经验 就是你们做编码转换前跟 09/24 02:41
9F:→ guanting886: 转换後 或任何方式汇入到新系统上 里面资料表的全栏 09/24 02:41
10F:→ guanting886: 位资料仍要写个程式校对一下 (若需要讲究资料完整 09/24 02:42
11F:→ guanting886: 跟正确一定要做) 09/24 02:42
12F:→ guanting886: 另外要留意两个 database的设定值、table 引擎、栏 09/24 02:43
13F:→ guanting886: 位设定有没有跑掉或是到新系统上有没有其他的状况 09/24 02:43