为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:windows7 x64
【CPU】:i5 6400
【问题描述】*:sql 语各种不兼容Mysql,这个这么标准的东西还整这么多限制
INSERT INTO table1(mid,mname,merid,startdt,enddt,mtype,stype,spsw,maid,tname) VALUES(?,?,?,FROM_UNIXTIME(?),FROM_UNIXTIME(?),?,?,?,?,?);
调用odbc的sqlexecute提示这个错误,在管理工具上又可以,头疼啊,烦死
[07002] 绑定的参数个数不正确 (-70039)
这种写法也不支持
DATE_ADD('1970-01-01 00-00-00', INTERVAL ? SECOND)
这种也不支持,交法2行的其它的一个数据也不行
UPDATE aginfo AS a JOIN aginfo AS b ON a.mid=? AND ((a.agendaid = ? AND b.agendaid = ?) OR (a.agendaid = ? AND b.agendaid = ?)) SET a.pos = b.pos,b.pos = a.pos;
最头疼的是,明明在管理工具中导入了一些测试数据,浏览表数据的时候又select不出来,odbc上也查询不出来,真是见鬼了,太奇葩了
可以试试 mysql migrate tools 把SQL转换成 oracle语法在 达梦里面运行试试。
1.达梦支持的是标准sql,语法兼容这块主要兼容oracle的语法,Mysql有很多特有的不标准的语法,这块需要做一定的改写。
2.绑定的参数个数不正确,这个您的语句里面有几个问号就要绑定几个参数,可以排查一下代码
3.date_add这个改为达梦的用法即可
dateadd(ss,?,'1970-01-01 00-00-00')
4.这个语句改写一下试试:
UPDATE aginfo a set a.pos = b.pos,b.pos = a.pos from aginfo b
where a.mid=? AND ((a.agendaid = ? AND b.agendaid = ?) OR (a.agendaid = ? AND b.agendaid = ?));
5.导入数据的时候是否提交了,注意一下对勾的提交按钮