I believe you're having this error because the year_exp
field is DECIMAL(2,2)
, and you want DECIMAL(4,2)
. DECIMAL(2,2)
means a number of precision 2, with up to 2 decimal places. But this number has 4 digits of precision.
This link to MSDN talks about the decimal precision.
http://msdn.microsoft.com/en-US/library/ms187746(v=SQL.90).aspx
Here's a quick test with similar results (done in SQL Server 2008, but I think you're on MySQL...)
1) Created a table with a test column:
CREATE TABLE testtable (testcolumn DECIMAL(2,2))
2) Ran insert statement... :
INSERT INTO testtable (testcolumn) VALUES (23.45)
... and received this error ...
Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.
(COMMENT: one of my fave errors ... "cannot convert number to number ..." ha ha)
3) Altered column to proper specifications
ALTER TABLE testtable ALTER COLUMN testcolumn DECIMAL(4,2)
4) Re-ran same insert statement. It works.
Please let me know if this helps.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…