2011-11-24 68 views
0

我正在尝试在托管平台上有客户的网站同步一个mssql数据库(在客户办公室托管)。微软Sql Server通过php同步MySQL同步

我已经必须成功地同步数据库的四个表(结构和数据)中的三个。 当我尝试将包含2个BLOB字段的2300条记录的第4个表与每个产品的图像同步时,会出现问题。 我试过的第一件事是

SELECT * FROM chunkyTable

但许多超时被解雇(尽管我设置“mssql.timeout”到7200

所以我成立了其读取10条记录分页同步每个查询并将它们插入到mysql数据库中

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

这些让我认为,也许mysql对传递给mysql_query()函数参数的长度有一些限制。 查询由该方法是:

INSERT INTO chunckyTable(field1,field2,...fieldN) 
VALUES (val1,val2,val3,...,valN),(val4,val5,val6,...,valM), 

重复10条记录。

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

你有类似的经验吗? 任何帮助将非常感激!

感谢, 卢克

回答

0

我发现是什么引发了错误。 其实有2件事。

  1. 我在创作查询这样$查询= “\” “mysql_real_escape_string($ VAL)。 ”\“” 但\”又让查询崩溃。
  2. Mysql的@@全球.max_allowed_pa​​cket在我的服务器上设置为1Mb,但每行都包含2个blob字段,其中有〜150Kb的图像,因此每行都超过300Kb,因为还有记录的数据,当我打包10行插入在一个查询中,我超出了max_allowed_pa​​cket的限制。为了解决这个问题,我一个接一个地插入行

谢谢反正你给我的建议!

0

如果你倾倒MSSQL会发生什么/插入到manualy mysql的一排? 另外 - 你可以尝试mysqli(注意我的意思是改进的mysql扩展),无论如何它应该比旧的mysql扩展更好。