凡人码农 2024-04-14 22:08 采纳率: 66.7%
浏览 3
已结题

Java MySQL数据库

Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'mp.books' doesn't exist

The error may exist in com/example/lib/mapper/BookMapper.java (best guess)

The error may involve defaultParameterMap

The error occurred while setting parameters

SQL: select * from books

Cause: java.sql.SQLSyntaxErrorException: Table 'mp.books' doesn't exist

; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table 'mp.books' doesn't exist] with root cause

img


上一个问题解决了现在又出现了新的问题,为什么他会自动给我在表名前面拼接mp.这个鬼东西啊

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-14 22:08
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在使用Spring Boot和MyBatis框架进行开发,并且遇到了一个关于数据库表名前缀的问题。错误信息表明你的应用试图从一个不存在的mp.books表中查询数据。

    首先,让我们确定一些基本设置是否正确。确保你的数据库配置是在application.propertiesapplication.yml文件中正确设置了,例如:

    spring.datasource.url=jdbc:mysql://localhost:3306/library?serverTimezone=UTC
    spring.datasource.username=root
    spring.datasource.password=password
    spring.jpa.hibernate.ddl-auto=update
    

    这里假设你已经创建了一个名为library的数据库,用户名是root,密码是password。如果你使用的是不同的数据库地址、用户名或密码,请相应地替换这些值。

    接下来,确认你的实体类(例如Book.java)是否正确注解了映射到哪个表:

    import javax.persistence.Entity;
    import javax.persistence.Table;
    
    @Entity
    @Table(name = "books")
    public class Book {
        // ... your properties and methods
    }
    

    在这个例子中,我们告诉JPA实体Book应该映射到名为books的表。然而,如果你的表名确实包含前缀,比如mp_books,你应该这样写:

    @Table(name = "mp_books")
    public class Book {
        // ... your properties and methods
    }
    

    然后,检查你的Mapper接口(例如BookMapper.java)中的SQL语句是否正确。默认情况下,MyBatis会自动处理表名与实体类之间的映射。但是,如果你手动编写了SQL语句,要确保它也包含了正确的表名前缀。例如:

    import org.apache.ibatis.annotations.Select;
    
    public interface BookMapper {
        @Select("SELECT * FROM mp_books")
        List<Book> getAllBooks();
    }
    

    最后,确认你的数据访问层(DAO)或服务层代码是否正确调用了Mapper的方法。如果上述所有设置都正确,但仍然有前缀问题,那么可能是Spring Boot的某个配置项影响了表名的生成。在这种情况下,你需要查看Spring Boot的自动配置部分,特别是与数据库相关的配置。

    如果你使用的是MyBatis Plus,可能需要检查其全局配置中是否有对表名前缀的设置。如果没有,那么问题可能出在其他地方,可能需要检查项目中的其他配置或第三方库。

    如果你能提供更多的上下文信息,例如你的Spring Boot启动类、相关配置文件以及实体类和mapper的具体代码,我可以更准确地帮你定位问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月17日
  • 已采纳回答 4月14日
  • 创建了问题 4月14日

悬赏问题

  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?
  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现