首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过php将Microsoft Sql Server同步到MySQL

问通过php将Microsoft Sql Server同步到MySQL
EN

Stack Overflow用户
提问于 2011-11-24 20:02:41
回答 2查看 1.2K关注 0票数 0

我正在尝试将mssql数据库(托管在客户办公室)与mysql数据库同步,mysql数据库位于客户网站所在的托管平台上。

我已经成功地同步了数据库的四个表(结构和数据)中的三个。当我尝试同步第四个表时,麻烦来了,这个表有大约2300条记录,每个产品的图像都有2个BLOB字段。我尝试的第一件事是

SELECT * FROM chunkyTable

但许多超时都被触发了(尽管我将"mssql.timeout“设置为7200。

因此,我设置了一个分页同步,每次查询读取10条记录并将它们插入到mysql数据库中。

对于前150条记录,一切都很顺利。从我制作的日志中,我可以看到,对于前15页,同步10条记录大约需要2到6秒(考虑一下,我从网站连接到mssql服务器,该服务器连接到一个普通的ADSL,这构成了一个相当大的瓶颈)。从第16页开始,同步10条记录所需的时间上升到5:30秒。我起初认为这是因为前150条记录没有存储任何图像,所以我检查了插入到mysql中的内容,发现没有插入任何内容!

这让我想到,也许mysql对传递给mysql_query()函数的参数长度有一定的限制。查询的组成方式是:

代码语言:javascript
复制
INSERT INTO chunckyTable(field1,field2,...fieldN)
VALUES (val1,val2,val3,...,valN),(val4,val5,val6,...,valM),

诸若此类

重复10条记录。

您知道传递给mysql_query函数的sql字符串的最大长度是否有一些限制(我查看了phpinfo()的输出,但没有关于此主题的任何配置)?

你对这种同步有过类似的经验吗?任何帮助都将不胜感激!

谢谢,卢克

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-25 17:11:04

我找到了触发错误的原因。实际上有两件事。

  1. 我以$query="\"".mysql_real_escape_string($val)."\"“的方式编写查询,但\"导致查询崩溃。我的服务器上的
  2. Mysql @@global.max_allowed_packet设置为1Mb,但每行包含2个blob字段,其中包含约150KB的图像。因此,每行超过300Kb,因为还有记录的数据,并且当我在一个查询中插入10行时,我超过了max_allowed_packet的限制。为了解决这个问题,我逐个插入行

无论如何,谢谢你给我的建议!

票数 0
EN

Stack Overflow用户

发布于 2011-11-24 20:19:58

如果您手动将mssql/insert转储到mysql一行,会发生什么情况?另外,你可以尝试mysqli (注意,我的意思是改进的mysql扩展),在任何情况下,它都应该比旧的mysql扩展更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8256718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档