alibaba / druid

阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
https://github.com/alibaba/druid/wiki
Apache License 2.0
27.93k stars 8.57k forks source link

[BUG] SQLUtils.refactor rewrite tablename error #6077

Open wangweicugw opened 2 months ago

wangweicugw commented 2 months ago

使用SQLUtils.refactor改写表名时,改写错误,把库名改写了 https://github.com/alibaba/druid/wiki/TableMapping_cn

Database Type

MySQL

Database Version

MySQL 5.7

Druid Version

1.2.23

JDK Version

JDK8

Error SQL

select user.music.col from user.music
insert into user.music(id, user_id, col) values (1, 2, 3) on duplicate key update user.music.col = 5

Testcase Code

    public static void main(String[] args) {
        Map<String, String> mapping = Collections.singletonMap("user", "user_01");

        String sql = "select user.music.col from user.music";
        String result = SQLUtils.refactor(sql, JdbcConstants.MYSQL, mapping);
        System.out.println("result = " + result);
        // SELECT user_01.music.col
        //FROM user.music

        sql = "insert into user.music(id, user_id, col) values (1, 2, 3) on duplicate key update user.music.col = 5";
        result = SQLUtils.refactor(sql, JdbcConstants.MYSQL, mapping);
        System.out.println("result = " + result);
        //INSERT INTO user.music (id, user_id, col)
        //VALUES (1, 2, 3)
        //ON DUPLICATE KEY UPDATE user_01.music.col = 5
    }

Stacktrace Info

No response

Error Info

No response

Jin-2019 commented 1 month ago

同类型问题 https://github.com/alibaba/druid/issues/6119