mysql tk_MySQL 中 使用 tk.mybatis 自动生成数据表,多出了前缀

在使用 tk.mybatis 自动生成数据表时遇到SQL异常,原因是生成的实体类中数据表名称多了前缀。解决办法是删除多余的点,并确保实体类实现序列号接口。SQL异常显示在查询数据库时,语法错误在于 'myshop..tb_user'。问题源于MySQL不支持Catalog,因此不应包含该前缀。
摘要由CSDN通过智能技术生成

使用 tk.mybatis 自动生成实体类与 mapper ,可能会报以下异常

### Error querying database. Cause: java.sql.SQLSyntaxErrorException: 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 '.tb_user' at line 1

### The error may exist in cn/duniqb/myshop/commons/mapper/TbUserMapper.java (best guess)

### The error may involve defaultParameterMap

### The error occurred while setting parameters

### SQL: SELECT id,username,password,phone,email,created,updated FROM myshop..tb_user

### Cause: java.sql.SQLSyntaxErrorException: 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 '.tb_user' at line 1

......

可以看到出现了意外的语句

SELECT id,username,password,phone,email,created,updated FROM myshop..tb_user

经查是由于在领域模型:实体类

1. 没有实现序列号接口

2. 删掉多余的点

具体参考:

自动生成的

@Table(name = "myshop..tb_content")

public class TbContent {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

/**

* 内容类目ID

*/

@Column(name = "category_id")

private Long categoryId;

......

改正后的

@Table(name = "tb_content")

public class TbContent implements Serializable {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

/**

* 内容类目ID

*/

@Column(name = "category_id")

private Long categoryId;

......

原理分析:

在SQL环境下Catalog和Schema都属于抽象概念,主要用来解决命名冲突问题

一个数据库系统包含多个Catalog,每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表、视图、字段等)

如数据库对象表的全限定名可表示为:Catalog名.Schema名.表名

供应商Catalog支持Schema支持

Oracle

不支持

Oracle User ID

MySQL

不支持

数据库名

MS SQL Server

数据库名

对象属主名,2005版开始有变

DB2

指定数据库对象时,Catalog部分省略

Catalog属主名

Sybase

数据库名

数据库属主名

Informix

不支持

不需要

PointBase

不支持

数据库名

由于 MySQL 不支持 Catalog 所致,不识别前缀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值