You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by GitBox <gi...@apache.org> on 2022/05/23 09:54:30 UTC

[GitHub] [shardingsphere] wingkingbobo commented on issue #17870: Mybatis INSERT foreach case SQLSyntaxErrorException

wingkingbobo commented on issue #17870:
URL: https://github.com/apache/shardingsphere/issues/17870#issuecomment-1134454929

   A simple PrepareStatement will also report an error. I wonder if there is a problem with the support of PrepareStatement.
   In this example, the sharding column is userid.
   ```java
           String jdbcUrl = "jdbc:mysql://localhost:3307/sharding_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";
   //        String jdbcUrl = "jdbc:mysql://localhost:3306/p1?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";
           DriverManager.registerDriver(new Driver());
           Connection connection = DriverManager.getConnection(jdbcUrl, "root", "123456");
   
           String sql = "INSERT INTO remark(userid, content, `time`) values (?, ?, ?)";
           java.sql.Date date = new java.sql.Date(remark.getTime().getTime());
           PreparedStatement statement = connection.prepareStatement(sql);
           statement.setLong(1, remark.getUserId());
           statement.setString(2, remark.getContent());
           statement.setDate(3, date);
           statement.execute();
   ```
   ```
   com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'org.apache.shardingsphere.sharding.rewrite.token.pojo.ShardingInsertValuesToken@' at line 1
   	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
   	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
   	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
   	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
   	at com.mysql.jdbc.Util.getInstance(Util.java:408)
   	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
   	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)
   	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914)
   	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
   	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
   	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495)
   	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903)
   	at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1242)
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@shardingsphere.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org