Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将MS SQL存储过程移植到MySQL_Mysql_Sql Server_Migration_Mysql Error 1064 - Fatal编程技术网

将MS SQL存储过程移植到MySQL

将MS SQL存储过程移植到MySQL,mysql,sql-server,migration,mysql-error-1064,Mysql,Sql Server,Migration,Mysql Error 1064,我有大约140-150个存储过程,需要从MS SQL 2005迁移到MySQL 5.1 在过去八个小时内成功地移植了其中的0个之后,我决定顺道拜访,询问是否有人有任何经验、技巧,或者知道一些有用的util应用程序 MySQL管理员不是很乐于助人,令人沮丧的是“MySQL错误号1064您的SQL语法有错误;请查看与MySQL服务器版本对应的手册以了解正确的语法”。考虑到平均SP的长度为+100行,简单地猜测问题所在并不是一个选项 这正是我得到的错误: Script line: 1 You

我有大约140-150个存储过程,需要从MS SQL 2005迁移到MySQL 5.1

在过去八个小时内成功地移植了其中的0个之后,我决定顺道拜访,询问是否有人有任何经验、技巧,或者知道一些有用的util应用程序

MySQL管理员不是很乐于助人,令人沮丧的是“MySQL错误号1064您的SQL语法有错误;请查看与MySQL服务器版本对应的手册以了解正确的语法”。考虑到平均SP的长度为+100行,简单地猜测问题所在并不是一个选项

这正是我得到的错误:

  Script line: 1    You have an error in your SQL syntax; check the manual that
   corresponds to your MySQL server version for the right syntax to use near '' at line 5
那么在第5行,我只有:

declare PropID float;
您可以尝试代替MySQL管理员:

MySQL管理员在哪里 设计用于管理MySQL服务器, MySQL查询浏览器旨在 帮助您查询和分析存储的数据 在MySQL数据库中


Gartner Group报告称,两种类似语言之间的手动转换速度约为每天150行。根据他们的说法,你的进步率只是比平均水平低一点点:——}更糟糕的是,它预测你前面还有150个工作日

这就是人们构建自动化迁移工具的原因,这些工具可以以常规且可靠的方式应用转换规则。如果你幸运的话,有人在你之前做过这件事。人们可能想做的从到的转换对的数量是巨大的,比人们所做的要大得多,所以通常你运气不佳

接下来有人会说“使用正则表达式”。这可能行不通,因为您必须找到编程语言结构,它们不是“常规的”,而是“上下文无关的”

一种方法是使用工具来实现这一点。这些都是编程操作,用一个代码片段替换另一个代码片段。它们通常需要一个完整的语言解析器,这样操作就可以像编译器一样对程序元素进行操作,而不是对文本字符串进行操作

编写程序转换的一种好方法是使用语言的表面语法作为模式,本质上是“如果你看到这个,用那个替换它”。 可以把这些看作是“正则表达式”,它被增强以处理“上下文无关”的问题

一种可以接受这种表面语法程序转换的工具, 是我们的


编写可信的转换代码需要一些努力。您需要转换大约15000行代码。当要转换的代码量如此之小时,编码转换与简单地咬紧牙关完成工作之间的权衡是困难的

您正在从功能强大的工具移植到功能较弱的工具。如果旧的过程使用MySQL不支持的特性,这可能会使移植变得几乎不可能

可能有帮助的一件事是,大多数SQL Server过程实现某种业务逻辑。好消息是,通常只使用了它们的一小部分。过滤掉未使用的过程可以节省大量工作


坏消息是,业务流程必须在移植后进行测试;即使是最优秀的程序员也不能用不同的语言重写它们并确保它们工作正常。这意味着在移植的过程投入生产后,需要进行大量的测试工作和支持工作。

mssql和MySQL之间有很多语法差异,当然也有。问题是:有时这些差异中的一个设法溜过去,然后我得到一个1064,但没有显示问题是什么,或者它在哪里。那么,你完成了吗?你是怎么做到的,花了多长时间?