设置指定数据库的sql_mode

嗯,楼上有人提过该方案了

sql_mode应该是session级别的,针对不同的库,可以自己使用自己的jdbc参数来做区分。

SQL_MODE支持全局和SESSION级别的, SESSION 级别的 SQL 模式的变化只会影响当前的客户端。
以下临时修改SQL_mode我在mysql上测试是ok的,tidb下应该也是一样的。
[使用JDBC]

    @Test
    public void sessionSqlMode() {
        String jdbcURL2 = "jdbc:mysql://localhost:3306/erp?sessionVariables=sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'";
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(jdbcURL2, username, password);
            Statement statement = connection.createStatement();
            ResultSet sessionRS = statement.executeQuery("select @@SESSION.sql_mode");
            if (sessionRS.next()){
                System.out.println(sessionRS.getString(1));
                sessionRS.close();
            }
            ResultSet globalRS = statement.executeQuery("select @@GLOBAL.sql_mode;");
            if (globalRS.next()){
                System.out.println(globalRS.getString(1));
                globalRS.close();

            }
            connection.close();
        } catch ( SQLException ex) {
            try {
                connection.rollback();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            ex.printStackTrace();
        }
    }

[使用shell]

1 个赞

学习了

敲黑板