gogf/gf-cli

MSSQL gen model nvarchar 字段类型有问题

Closed this issue · 1 comments

SELECT NAME,XTYPE FROM systypes
WHERE NAME IN ('nvarchar', 'sysname')
ORDER BY XTYPE

以上sql查询,可以看到
image
两者 XTYPE 都是231
这就导致
github.com\gogf\gf@v1.13.0\database\gdb\gdb_driver_mssql.go
image
这里的语句

SELECT c.name as FIELD, CASE t.name
				WHEN 'numeric' THEN t.name + '(' + convert(varchar(20),c.xprec) + ',' + convert(varchar(20),c.xscale) + ')'
				WHEN 'char' THEN t.name + '(' + convert(varchar(20),c.length)+ ')'
				WHEN 'varchar' THEN t.name + '(' + convert(varchar(20),c.length)+ ')'
				ELSE t.name + '(' + convert(varchar(20),c.length)+ ')' END as TYPE
			FROM systypes t,syscolumns c WHERE t.xtype=c.xtype -- 一个字段名可能对应多个类型
			AND c.id = (SELECT id FROM sysobjects WHERE name='表名')
			ORDER BY c.colid

然后后面就会出现index错位的问题

测试数据库:
sql2017
sql2008

看了下在v1.13.2版本中已经修复了这个问题了, systypes中的关联字段由xtype改为了xusertype就没有问题了