我在使用 Java 和 JDBC 向 AS400 数据库插入语句时收到此错误。
问问题
16492 次
4 回答
7
我想通了,我有一个长度为 4 和十进制数字 2 的数字字段,在我的插入中,我试图在这个数字字段中插入 100,这给出了这个错误。
我更改了表格并将其设为长度为 9 和十进制数字为 2
的数字,并且插入工作。
即使错误显示“转换错误”,实际上它的字段长度错误。
于 2009-09-10T17:43:17.277 回答
1
当用户 ID 的表从 2 位更新为 3 位并且查询插入到历史表中,其中历史表未更新为用户 ID 的 3 位时,我遇到了这个问题。用于Alter Table
更正历史记录表,一切正常。
alter table "Table Name" ALTER COLUMN "COLUMN NAME" SET DATA TYPE NUMERIC(3)
错误信息不直观:
变量或参数 *N (#-302) 的转换错误 [IBM][System iAccess ODBC 驱动程序][DB2 for i5/OS]SQL0012 - 列“columnname”与表“Tablename”发生无限定的关联。(#12)
于 2016-03-14T16:54:18.407 回答
0
我的问题是我忽略了参数占位符周围有单引号这一事实。所以我得到了一个6 -- Numeric data that is not valid.
错误。
因此,例如:
select someColumn
From favTable
where someOtherColumn = '?'
command.Parameters.Add("decVal", OleDbType.Decimal, 10).Value = model.someDecVal;
更正为:
select someColumn
From favTable
where someOtherColumn = ?
解决了我的问题。
在这里看起来很容易捕捉到,但是对于大查询,这很容易被忽略。在这上面浪费了大约一个小时。
于 2019-11-27T13:43:35.387 回答
0
我今天运行以下查询时遇到此错误:
select *
from mytable
where invoice_date >= '2019-01-01'
原来发票“日期”不是日期......它是一个模拟日期的小数。也许是糟糕的数据库设计,但简单的解决方法是:
select *
from mytable
where invoice_date >= 20190101
于 2019-06-28T13:36:59.433 回答