(本文档仅供参考)
问题说明
目前有用户用v3版本,比如有三个表,A、B、C,A做主表,其他两个表左连接A,现在升级到v8后,有一个变成右连接了,查看SQL,本来是B表在上面,现在是C在上面了。找不到下面定义表的字段导致报错,要如何解决?用户用V3版本,比如有三个表,A、B、C,A做主表,其他两个表左连接A,现在升级到v8后,有一个变成右连接了,查看SQL,本来是B表在上面,现在是C在上面了。找不到下面定义表的字段导致报错,要如何解决?
问题原因
v V3版本生成的SQL虽然看着表之间的关联关系是正常的,但实际表之间是左连接还是右连接在V8以下的版本是随机生成的,但有些数据库是依赖表之间的顺序来自动生成对应的表关系的,可以说本质上表关联关系中的设置其实是没有用的,实际SQL里边的表关联关系有时候是生成左关联有时候生成右关联。为了保证顺序的正确性,在V8版本优化了表之间的关联关系,我们默认是按照数据源的排序设置SQL中是左关联效果还是右关联效果。解决方案:
解决方案
依据于用户想要生成的SQL效果对数据源下的表进行排序,如果是跨schema,则先按照schema的顺序,然后再到表的顺序。比如说如果是A->B->C,这样的顺序应该是ABC,如果是A->B,A->C,顺序应该A在最上面,B和C的顺序依据于用户希望输出的SQL效果来对表进行排序。
...