Table ‘数据库.数据库表‘ doesn‘t exist

本文记录了一次因数据库表名错误导致的程序异常问题。开发者在使用Eclipse时发现报错提示缺少'user'表,实际上表名为'admin_info'。通过修改代码中的表名并更新配置文件,成功解决了问题,提醒我们注意代码中的细节。此外,分享了对代码进行搜索替换以快速修正错误的方法,强调了配置文件与数据库一致性的重要性。

出现这种问题原因是代码中的数据库、数据表跟自己创建的数据库名跟表名对不上,可以根据错误提示看到是哪不一样。

我的数据库名跟表名是这样的:

eclipse报错是这样的:

 

意思是在userdb数据库中没有user这个表,我的是UserDao类里面的问题

package com.ctc.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.ctc.model.User;
import com.ctc.util.DBUtil;



public class UserDao {
public int findByUser(User user) {
		
		String sql="select * from user where username='"+user.getUsername()+
				"' and password='"+user.getPassword()+"'";
		ResultSet rSet=DBUtil.query(sql);
		try {
			if(rSet.next()) {
				return 1;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return 0;
	}
	public int DeleteUser(User user) {
		String sql="delete from user where username='"+user.getUsername()+"'and password='"+user.getPassword()+"'";
		int result=DBUtil.update(sql);
		if(result>0)
			return 1;
		else
			return 0;
		
	}
	public int UpdateUser(User user) {
		String sql="update user set password='"+user.getPassword()+"'where username='"+user.getUsername()+"'";
				int result=DBUtil.update(sql);
		if(result>0)
			return 1;
		else
			return 0;
	}
	public int InsertUser(User user) {
		String sql="insert into user(username,password) "
				+ " values('"+user.getUsername()+"','"+user.getPassword()+"')";
		int result=DBUtil.update(sql);
		if(result>0)
			return 1;
		else
			return 0;
	}
	public List<User>findAllUser(){
		List<User> list=new ArrayList<User>();
		String sql="select * from user";
		ResultSet rSet=DBUtil.query(sql);
		try {
			while(rSet.next()) {
				User user=new User();
				user.setUserid(rSet.getInt("userid"));
				user.setUsername(rSet.getString("username"));
				user.setPassword(rSet.getString("password"));
				list.add(user);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}
}

我直接粘的朋友的代码,忘记改配置了,这回的问题警醒我了,细节决定成败。

按ctrl F打开替换,我这里直接把user表名换回admin_info表名了

 Ps:这里配置文件中的是自己数据库的名字:(我的是数据库名是userdb)

启动Tomcat,后运行下代码就成了

 

 

 

<think>嗯,用户遇到了“Table ya.uu’ doesn't exist”这个错误信息。首先,我需要确定这个错误的具体原因。通常,这种错误出现在数据库操作中,特别是当尝试访问一个不存在的时。可能的情况包括名拼写错误、数据库模式不正确,或者权限问题导致用户无法访问该。 接下来,我应该分步骤思考可能的原因和解决方法。首先,检查名的拼写是否正确。用户提供的名是“ya.uu”,这里可能涉及到数据库名称和名的组合,比如“ya”是数据库或模式名,而“uu”是名。需要确认是否存在拼写错误,比如是否应该是“ya.user”或者其他类似的名称。 然后,确认数据库或模式是否存在。如果“ya”是一个数据库或模式,用户需要确保他们正在连接到正确的数据库,或者在使用时正确指定了模式名。例如,在MySQL中,可能需要使用反引号或正确的大小写,因为某些数据库系统对大小写敏感。 权限问题也是一个可能的原因。用户可能没有权限访问“ya”数据库下的“uu”,或者该确实不存在。这时候需要检查用户的权限设置,或者让用户确认是否已经被创建。 另外,检查连接是否正确也很重要。用户是否连接到了正确的数据库实例或服务器?有时候,错误的连接配置会导致访问到错误的数据库环境,从而出现不存在的错误。 还有,是否存在需要用户确认。可以通过执行如SHOW TABLES或查询系统(如information_schema.tables)来验证是否存在。如果确实不存在,可能需要重新创建或恢复备份。 此外,还需要考虑数据库类型的不同,比如MySQL、PostgreSQL、SQLite等在错误提示和名处理上可能有差异。例如,PostgreSQL对模式的支持更为严格,而SQLite则相对简单,可能不需要指定模式名。 最后,处理特殊字符和保留字的问题。如果名或数据库名使用了保留字或特殊字符,可能需要使用引号或转义符来正确引用它们,避免语法错误。 总结下来,解决步骤应该是:检查拼写,确认数据库/模式,验证权限,检查连接,确认是否存在,处理特殊字符,并根据具体数据库类型调整操作。这样用户就能系统地排查并解决问题了。</think>遇到数据库错误“Table ya.uu’ doesn’t exist”时,通常是由以下原因引起的。以下是逐步排查和解决问题的指南: --- ### **1. 检查名拼写** - **问题**:名可能存在拼写错误(如大小写不一致或特殊符号未转义)。 - **操作**: - 核对名 `ya.uu` 是否完整正确。 - 注意数据库对大小写的敏感性(如MySQL在Linux下区分大小写,Windows下不区分)。 - 若名含特殊符号(如空格),需用反引号包裹:```SELECT * FROM `ya.uu`;``` --- ### **2. 确认数据库/模式(Schema)** - **问题**:`ya` 可能是数据库名或模式名,需验证其是否存在。 - **操作**: - **查看所有数据库**:`SHOW DATABASES;`(MySQL)或 `\l`(PostgreSQL)。 - **确认当前使用的数据库**:`SELECT DATABASE();`(MySQL)或 `SELECT current_schema();`(PostgreSQL)。 - 若需指定数据库:`USE ya;`(MySQL)或 `SET search_path TO ya;`(PostgreSQL)。 --- ### **3. 验证是否存在** - **操作**: - 列出当前数据库中的所有: ```sql -- MySQL SHOW TABLES FROM ya; -- PostgreSQL \dt ya.* ``` - 直接查询系统: ```sql SELECT * FROM information_schema.tables WHERE table_schema = 'ya' AND table_name = 'uu'; ``` --- ### **4. 检查权限问题** - **问题**:用户可能没有访问 `ya.uu` 的权限。 - **操作**: - 联系数据库管理员,确认用户权限。 - 授予权限示例(MySQL): ```sql GRANT SELECT ON ya.uu TO 'your_user'@'localhost'; ``` --- ### **5. 检查数据库连接** - **问题**:可能连接到错误的数据库实例或环境(如开发/生产环境混淆)。 - **操作**: - 确认连接配置(如主机、端口、用户名)。 - 检查代码或配置文件中的连接字符串。 --- ### **6. 未创建或已删除** - **问题**:可能尚未创建,或已被意外删除。 - **操作**:
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值