我正在开发一个新的SQL Server数据库:
JDBC:SQLSERVER:// [主机]:[端口];的databaseName = WSO2AM_STATS_DB
我使用DDL(非常接近https://raw.githubusercontent.com/wso2/product-apim/e745561c1948ffcd225fea8cffedd6b00fbd4f27/modules/distribution/resources/stat/sql/mssql.sql)来创建应用服务器工作所需的所有表。奇怪的是,在几分钟之后,有时是10分钟,有时是几小时,以随机的方式,大多数列在DDL中设计为varchar
数据类型,最初显示在Microsoft SQL Server Management Studio或Squirrel SQL客户端中如varchar
,则自动转为text
数据类型。
我正在研究这个并试图找出原因,例如:是否有一些触发器导致了这种奇怪的行为?这是我们的开发/测试,因为这样的错误现在已经在我们的应用服务器日志中全部结束了:
TID[-1234] AppID[publisher] [AM] [2016-09-14 16:47:52,765] ERROR {JAGGERY.modules.statistics.usage:jag} -
org.wso2.carbon.apimgt.usage.client.exception.APIMgtUsageQueryServiceClientException: ***Error occurred while querying from JDBC databaseThe text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.***
我们花了一些时间来找出错误被抛出的原因,因为我们的DDL对于任何列都没有text
数据类型,正如您从上面提到的SQL文件中可以看出的那样。
顺便说一句,我从Microsoft SQL Server Management Studio或Squirrel SQL客户端运行相同的DDL,行为相同,因此它与我们使用的工具无关。