I got the following error for linked table:
Exception in thread "main" org.h2.jdbc.JdbcSQLException: Value too
long for column DT: DATE '2008-01-08' [90005-105]
at org.h2.message.Message.getSQLException(Message.java:103)
at org.h2.message.Message.getSQLException(Message.java:114)
at org.h2.table.Column.validateConvertUpdateSequence(Column.java:301)
at org.h2.table.Table.validateConvertUpdateSequence(Table.java:579)
at org.h2.command.dml.Insert.update(Insert.java:119)
at org.h2.command.CommandContainer.update(CommandContainer.java:71)
at org.h2.command.Command.executeUpdate(Command.java:207)
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:163)
at org.h2.mine.Test.datetime2date(Test.java:51)
at org.h2.mine.Test.main(Test.java:10)
==============================================
The reason for this error is that Oracle and H2 have different
precision for date/time values and the precision check fails within
Column.java (line 296). The fix may be to remove precision checks
for date/time types and for most numeric types (like REAL and DOUBLE).
Precisions returns by different database are different and they are
not important in this place.
========================================
To reproduce the error:
========================================
package org.h2.mine;
import org.h2.test.TestBase;
import java.sql.*;
public class Test {
public static void main(String[] a) throws Exception {
new Test().datetime2date();
}
public void datetime2date() throws Exception {
String driver = "oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
Connection oracle = DriverManager.getConnection(url, "scott",
"tiger");
Statement ora = oracle.createStatement();
drop(ora, "TWO");
ora.execute("CREATE TABLE TWO (DT DATE)");
Class.forName("org.h2.Driver");
Connection h2 = DriverManager.getConnection
("jdbc:h2:mem:dual");
Statement sa = h2.createStatement();
drop(sa, "ONE");
sa.execute("CREATE TABLE ONE (DT DATE)");
sa.execute("INSERT INTO ONE VALUES (TIMESTAMP'2008-01-08
10:11:15')");
sa.execute("CREATE LINKED TABLE TWOL
('oracle.jdbc.driver.OracleDriver',
'jdbc:oracle:thin:@127.0.0.1:1521:XE', 'scott', 'tiger', 'TWO');");
sa.execute("INSERT INTO TWOL SELECT DT FROM ONE");
{
ResultSet rs = sa.executeQuery("select * FROM TWO");
rs.next();
}
drop(ora, "TWO");
drop(sa, "ONE");
}
private void drop(Statement sa, String name) {
try {
sa.execute("DROP TABLE " + name);
} catch (SQLException e) {
}
}
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "H2
Database" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/h2-database?hl=en
-~----------~----~----~----~------~----~------~--~---