Archery icon indicating copy to clipboard operation
Archery copied to clipboard

SQLserver 数据库名称包含小数点和减号报错[ bug ]

Open cdzhangyong opened this issue 4 years ago • 12 comments

在提交 issue 前,请查阅以下资源,请先进行搜索来保证没有类似的 issue。 文档 | FAQ

重现步骤

SQL上线-->SQL提交

2.点选到对应的SQLserver数据库进行操作 3.点选包含有小数点或者包含减号的数据库名称的时候就会报错如下: ('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]“.0”附近有语法错误。 (102) (SQLExecDirectW)') -->

期待结果和实际结果

期待结果: 数据库名称特殊符号做处理 实际结果:

截图

错误日志

版本信息

应用版本/分支:1.8.0

部署方式:Docker

cdzhangyong avatar Jul 08 '21 02:07 cdzhangyong

SQLserver数据库 库名里面包含小数点和减号的时候报错如下: ('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]“.0”附近有语法错误。 (102) (SQLExecDirectW)')

cdzhangyong avatar Jul 08 '21 02:07 cdzhangyong

sqlserver 是我提的pr, 但我手边既没有 sqlserver, 公司也没有部署 archery, 麻烦你看看如何修复, 然后顺手提个 pr 吧

LeoQuote avatar Jul 08 '21 03:07 LeoQuote

sqlserver 是我提的pr, 但我手边既没有 sqlserver, 公司也没有部署 archery, 麻烦你看看如何修复, 然后顺手提个 pr 吧

pr啥意思,我是运维,不具备开发能力,解决不了这个问题

cdzhangyong avatar Jul 08 '21 03:07 cdzhangyong

https://github.com/hhyo/Archery/blob/217d7537609e9cc28c4722096c23f4485dcd3b8e/sql/engines/mssql.py#L51-L71 你看看这里拼出来的 sql 语句有什么问题吗? 有没有什么错误? 你可以修改看看

LeoQuote avatar Jul 08 '21 03:07 LeoQuote

结果如下: [SQL]select c.name ColumnName, t.name ColumnType, c.length ColumnLength, c.scale ColumnScale, c.isnullable ColumnNull, case when i.id is not null then 'Y' else 'N' end TablePk from (select name,id,uid from testdb.5..sysobjects where (xtype='U' or xtype='V') ) o inner join testdb.5..syscolumns c on o.id=c.id inner join testdb.5..systypes t on c.xtype=t.xusertype left join testdb.5..sysusers u on u.uid=o.uid left join (select name,id,uid,parent_obj from testdb.5..sysobjects where xtype='PK' ) opk on opk.parent_obj=o.id left join (select id,name,indid from testdb.5..sysindexes) ie on ie.id=o.id and ie.name=opk.name left join testdb.5..sysindexkeys i on i.id=o.id and i.colid=c.colid and i.indid=ie.indid WHERE O.name NOT LIKE 'MS%' AND O.name NOT LIKE 'SY%' and O.name='{1}' order by o.name,c.colid

[Err] 42000 - [SQL Server]“.0”附近有语法错误。 42000 - [SQL Server]“.0”附近有语法错误。 42000 - [SQL Server]“.0”附近有语法错误。

cdzhangyong avatar Jul 08 '21 03:07 cdzhangyong

你还不懂我意思吗? 靠你了, 我没环境开发, 代码就在这, 就是这块代码出的问题, 你来改, 改好了有空提个 pr.

LeoQuote avatar Jul 08 '21 03:07 LeoQuote

请问一下我直接修改docker文件里面的/opt/archery/sql/engines/mssql.py 然后重启docker能用吗?我把这个文件69行改成了: order by o.name,c.colid""".format('"{}"'.format(db_name), tb_name) 还是不行

cdzhangyong avatar Jul 08 '21 03:07 cdzhangyong

你可以加上一些 print , 把生成的 describe 语句打出来, 看看有没有生效, 有日志会好看一些

LeoQuote avatar Jul 08 '21 03:07 LeoQuote

你好,我是用docker-compose安装的,我发现我在archery容器内部修改了/opt/Archery/sql/engines/mssql.py 怎么重启容器和操作系统,我修改的配置都不生效呢?

cdzhangyong avatar Jul 08 '21 05:07 cdzhangyong

好了。解决了,我提交代码吧

cdzhangyong avatar Jul 08 '21 06:07 cdzhangyong

感谢!

LeoQuote avatar Jul 08 '21 06:07 LeoQuote

你已经很久没有回复这个issue了,如果没有进一步的信息的话, 会作为不活跃issue关闭, 感谢你对本项目的贡献。 This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] avatar Jul 24 '21 00:07 stale[bot]