Hi there!
> -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Tea Yu wrote: > > Hi! I just tried > > Windows ME + MySQL Server - 4.0.9/4.0.11 + > > ConnectorJ - 3.0.4/3.0.6/3.1.0 > > > > with an InnoDB table > > test (id bigint not null auto_increment, name varchar(255)) > > also tried > > test (id int not null auto_increment, name varchar(255)) > > > > and did an SQLQuery thru JDBC > > insert into TABLE (name) values ('test'); > > select last_insert_id() from TABLE; > > > > but got the Exception > > java.sql.SQLException: Invalid value for getInt() - 'q' > > > > while successive running of program returns > > 'r', 's', 't'... > > > > Query from console returns the correct result, but it returns n rows in set > > if last_insert_id() is n > > e.g. if select last_insert_id() = 7, 7 rows are returned in set > > > > > > Is there a bug in ConnectorJ regarding this... seems nobody else is having > > such a problem...? > > > I can't reproduce this error with the following test: > > public void testLastInsertId() throws Exception { > try { > stmt.executeUpdate("DROP TABLE IF EXISTS lastInsertTest"); > stmt.executeUpdate("CREATE TABLE lastInsertTest (id bigint not null > auto_increment primary key, name varchar(255))"); > stmt.executeUpdate("INSERT INTO lastInsertTest (name) values ('test')"); > rs = stmt.executeQuery("SELECT LAST_INSERT_ID() FROM lastInsertTest"); > rs.next(); > rs.getInt(1); > > > } finally { > stmt.executeUpdate("DROP TABLE IF EXISTS lastInsertTest"); > } > } > > However, your SQL is a little funny, for example you can't create a > table using the SQL you give, as AUTO_INCREMENT columns also have to be > the primary key. Also, you call the table 'test', but then refer to it > as 'TABLE' when doing your SELECT_LAST_INSERT_ID()...so hopefully these > are cut-and-paste errors, otherwise it seems you are not creating the > queries you think you are. Sorry, cause I didn't copy-n-paste those so there were typos, actually I created the table in console: 1) create table test (id INTEGER NOT NULL AUTO_INCREMENT, name VARCHAR(255), primary key (id)); 2) here is the code segment String insertStmt = "insert into test (name) values ('hi')"; String queryStmt = "select last_insert_id()"; try { stmt.executeUpdate(insertStmt); ResultSet rs = stmt.executeQuery(queryStmt); if(rs.next()) System.out.println("last insert id: " + rs.getInt(1)); } catch (SQLException e) { System.out.println(e); } if a) I comment out the rs.getInt(1) line, no exception throws... else it throws something like java.sql.SQLException: Invalid value for getInt() - 't' b) if I use getString(1) instead, no exception throws... but it returns "t", "u" or something 3) I tried to insert records thru MySQLCC without errors. More thoughts? Regards Tea --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php