Navicat更改MySql表名后IDEA项目启动会找原来的表

问题:找不到表,项目启动失败

MySQL 里已经 RENAME TABLE old_name TO new_name; 了,但项目一启动就抛
Table 'xxx.old_name' doesn't exist,说明 代码/配置里还有地方没改

按下面 4 个层次一次性扫干净即可解决。


  1. Java 实体/映射层(最常见)

  • JPA:@Table(name = "old_name") → 改成新表名
  • MyBatis XML:<select id="xxx" resultType="Xxx" table="old_name"> 或 SQL 语句里写死的 FROM old_name
  • MyBatis-Plus:@TableName("old_name")
  • Hibernate:hibernate.hbm2ddl.auto=validate 时也会校验表名,务必同步。

  1. Spring 配置文件

  • spring.datasource.schema/data 里如果写了 old_name.sql 初始化脚本,一起改名。
  • Flyway/Liquibase 脚本:
    • 若已执行过的脚本里包含旧表名,不要改历史脚本 ,而是 新增一条迁移脚本 把旧表 rename 成新表;
    • 若脚本尚未在生产执行,可直接改脚本后重新跑。

  1. 二级缓存 / MyBatis-Plus 全局缓存

  • MyBatis-Plus 3.4+ 默认带 表映射缓存 ,改表名后缓存仍指向旧表。
    解决:清掉 target/build/ 目录,重新编译;或在启动参数里加

    复制代码
    mybatis-plus.global-config.db-config.table-underline=true
    mybatis-plus.configuration.cache-enabled=false

    临时关闭缓存验证。


  1. 数据库连接池 / 多数据源路由

  • 若用了 ShardingSphere、动态数据源