"\r\n### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'pig_config_leda.sys_user' doesn't exist\r\n### The error may exist in com/pig4cloud/pig/admin/mapper/SysUserMapper.java (best guess)\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT user_id,work_status,username,password,salt,create_by,update_by,create_time,update_time,del_flag,lock_flag,phone,avatar,dept_id,wx_openid,mini_openid,qq_openid,gitee_login,osc_id,nickname,name,email,company_id,parent_id,worker_id,identity_num,cids,region_id,sex,birthday,age,hometown,id_card_location,profession,graduation_school,job_name,in_work_time,work_age,education,level,remark,code_id,city_array,project_id,dbd_bz_government_deviceinfor_id,is_check_in,check_in_setting_id,uni_cid FROM sys_user WHERE del_flag='0' AND (username = ?)\r\n### Cause: java.sql.SQLSyntaxErrorException: Table 'pig_config_leda.sys_user' doesn't exist\n; bad SQL grammar []"
目录
方式一:
这个错误的核心原因是:数据库 pig_config_leda 中不存在 sys_user 表,导致执行查询用户信息的 SQL 语句时失败。具体分析和解决方法如下:
错误原因拆解
- 表不存在:SQL 语句尝试查询
sys_user表(用户表,通常存储系统用户的账号、密码等信息),但数据库pig_config_leda中没有这个表,直接触发SQLSyntaxErrorException。 - 关联影响:
sys_user表是系统核心表(用于用户认证、权限管理等),它不存在会导致登录、用户管理等依赖用户信息的功能全部失效。
解决步骤
1. 确认表是否真的不存在
登录 pig_config_leda 数据库,执行以下 SQL 检查表是否存在:
sql
-- MySQL 示例
SHOW TABLES LIKE 'sys_user';
-- PostgreSQL 示例
SELECT table_name FROM information_schema.tables WHERE table_name = 'sys_user';
- 若查询结果为空,说明表确实不存在,需创建;
- 若表存在,可能是表名大小写问题(如数据库区分大小写,实际表名为
Sys_User)或当前数据库用户无访问权限。
2. 创建 sys_user 表(核心解决方法)
sys_user 是系统用户核心表,需根据系统设计创建。以下是通用表结构示例(可根据实际项目的字段调整):
sql
-- MySQL 示例:创建 sys_user 表(用户表)
CREATE TABLE `sys_user` (
`user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(64) NOT NULL COMMENT '用户名(登录账号)',
`password` varchar(128) NOT NULL COMMENT '密码(加密存储)',
`salt` varchar(64) DEFAULT NULL COMMENT '加密盐值',
`name` varchar(64) DEFAULT NULL COMMENT '用户姓名',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`email` varchar(64) DEFAULT NULL COMMENT '邮箱',
`avatar` varchar(255) DEFAULT NULL COMMENT '头像URL',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门ID',
`lock_flag` tinyint(1) DEFAULT 0 COMMENT '锁定状态(0=正常,1=锁定)',
`del_flag` tinyint(1) DEFAULT 0 COMMENT '删除标识(0=正常,1=删除)',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
-- 其他业务字段(根据日志中的查询字段补充,如 work_status、identity_num 等)
PRIMARY KEY (`user_id`),
UNIQUE KEY `idx_username` (`username`) COMMENT '用户名唯一索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户表';
- 若项目使用 代码生成器 或 数据库版本管理工具(Flyway/Liquibase),建议通过工具生成表结构,确保字段与代码中的实体类(
SysUser)完全匹配。
3. 检查数据库连接配置(确保操作正确的库)
确认项目连接的数据库是否为 pig_config_leda,避免因配置错误导致表 “找错库”:
yaml
# 示例:application.yml 中的数据库配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/pig_config_leda?useUnicode=true&characterEncoding=utf8 # 确认库名正确
username: 数据库用户名
password: 数据库密码
- 若库名错误,修改为实际存储
sys_user表的数据库名称,重启服务。
4. 验证权限与表结构匹配性
- 数据库权限:确保连接数据库的用户有
sys_user表的查询权限(SELECT),可通过以下 SQL 授权:sql
GRANT SELECT ON pig_config_leda.sys_user TO '数据库用户名'@'localhost'; FLUSH PRIVILEGES; - 字段匹配:创建表后,确保表中的字段(如
user_id、username等)与错误日志中 SQL 语句的查询字段完全一致(避免字段缺失导致新的错误)。
验证解决结果
创建表并调整配置后,重新触发用户查询操作(如登录、查询用户列表),检查:
- 是否再出现 “Table 'pig_config_leda.sys_user' doesn't exist” 错误;
- 执行
SELECT * FROM sys_user LIMIT 1能否正常返回结果(若表中已有数据)。
若查询成功,说明问题已解决。
方式二:
如果配置文件、内容、数据库名、数据表数据都正确。
关掉IDEA,重新一个一个运行服务。(我本人就这样成功了,我从周一到周三一直没有关过IDEA,中间换过启动n多个项目。猜测缓存之类的原因。。)
5768

被折叠的 条评论
为什么被折叠?



