MySQL报列名找不到错误

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

public class MysqlTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		Class.forName("com.mysql.jdbc.Driver");
		//String url="jdbc:mysql://localhost:3306/mydb?user=******&password=******&useOldAliasMetadataBehavior=true&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false";
		String url="jdbc:mysql://localhost:3306/mydb?user=******&password=******&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false";
		Connection conn = DriverManager.getConnection(url);
		PreparedStatement stmt = conn.prepareStatement("select id as myid,name as myname from test");
		ResultSet rs = stmt.executeQuery();
		ResultSetMetaData rsmd = rs.getMetaData();
		String c1 = rsmd.getColumnName(1);
		String c2 = rsmd.getColumnName(2);
		while(rs.next()){
			String id = rs.getString(c1);//报列名找不到异常
			String name = rs.getString(c2);
			System.out.println(id+"|"+name);
		}
		System.out.println(conn);
		rs.close();
		stmt.close();
		conn.close();
	}

}
Exception in thread "main" java.sql.SQLException: Column ‘id‘ not found.
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872)
	at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1073)
	at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5212)
	at com.bill99.mysql.MysqlTest.main(MysqlTest.java:25)

解决办法:

JDBC URL中增加useOldAliasMetadataBehavior=true参数

时间: 2024-11-11 05:00:49

MySQL报列名找不到错误的相关文章

mysql报错序号对应的错误

mysql报错序号对应的错误 1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败<=================可以忽略 1008:数据库不存在,删除数据库失败<=================可以忽略 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:删除数据库文件失败 1012:不能读取系统表中的记录 1020:记录已被其他用户修改 1021:硬盘剩余空间不足,请加大硬盘可用空间 1022:关键

dos 下启动mysql时,报服务器找不到错误

当在dos下启动mysql服务时,输入  net start mysql 后报错.错误信息为:服务名无效.请键入 NET HELPMSG 2185 的解决方法. dos下找到MySQL的安装目录下的bin文件:比如我的是:C:\xampp\mysql\bin 然后输入:mysqld --install C:\xampp\mysql\bin>mysqld --install Service successfully installed. C:\xampp\mysql\bin>net start

yum方式安装mysql报错找不到mysql.sock

yum方式安装mysql省去了源代码包安装的许多步骤,但是有时会遇见mysql yum包装完mysql之后,在启动mysql服务时,启动不了的问题,报错: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2),找不到mysql.sock文件,mysql.sock文件是安装mysql之后初始化数据库之后才会出现的,因此在安装完包之后,做一下步骤: 添加 mysqld 服务. /sbin/chkconfig

maven项目中POM文件报plugins找不到错误

今天要用maven建一个项目,但是项目创建完成以后再POM文件中报错了,具体错误如下所示: 上面是什么意思呢?简单翻译就是说maven-surefire-plugin这个插件找不到,解决办法如下所示: 首先打开本地仓库,按照org\apache\maven\plugins\maven-surefire-plugin\2.12.4路径打开文件夹,发现里面只有maven-surefire-plugin-2.12.4.pom.lastUpted这样的以lastUpted结尾的文件, 这些文件全部删除掉

定时任务任务脚本报命令找不到错误原因分析

1.1 定时任务内环境变量和shell环境变量的区别 1.1.1 shell环境变量PATH查询用echo $PATH命令 [[email protected] /]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin shell环境变量 1.1.2 定时任务内环境变量PATH查询是把echo $PATH的命令写入脚本,再把执行结果写入文本查询结果. [[email protecte

the server quit without updating pid mysql报这个错误,你知道是怎么回事不?

休息之时,开发一台测试机说mysql启动不了,报以上错误,和往常一样,网上的文章并没有卵用,于是自己看日志,解决方法如下: Hash 2017/1/7 11:04:50 我刚起床啊 李飞平 2017/1/7 11:05:11 194的mysql报错,不急 Hash 2017/1/7 11:05:21 你看下free  -m 李飞平 2017/1/7 11:05:32 没问题,还有9个G Hash 2017/1/7 11:06:03 关了进程重启下mysql11:07:01李飞平 2017/1/7

Linux环境下MySQL报Table &#39;xxx&#39; doesn&#39;t exist错误解决方法

修改了lower_case_table_names=1 后,业务发有个库的表打不开了,看了表名以前是大写,查了一下如果设置不区分大小写, 以前的大小表名要改成小写.重启服务后可用! MYSQL在LINUX下数据库名.表名.列名.别名大小写规则如下: 1.数据库名与表名是严格区分大小写的 2.表的别名是严格区分大小写的 3.列名与列的别名在所有的情况下均是忽略大小写的 4.变量名也是严格区分大小写的 Linux环境下MySQL报Table 'xxx' doesn't exist错误解决方法

命令行连接mysql服务器时 报Can&#39;t connect to local MySQL server through socket &#39;xxx.sock&#39;错误

本来之前用的好好的mysql服务器,突然就报Can't connect to local MySQL server through socket 'xxx.sock'错误了 遇到该问题思路首先是:检查 my.cnf 中 socket 配置的路径及权限. 但是查看完 没发现路劲权限有问题,最后跑去另一台同时配置的服务器上看  发现/data/perconadata有一个/mnt/perconadata/mysql.sock的软连接 于是乎到问题机器上 cd /data/perconadata/ s

linux上的mysql报Table &#39;xxx&#39; doesn&#39;t exist的错误解决方法

linux上的mysql报Table 'xxx' doesn't exist的错误解决方法 问题:程序报Table 'xxx' doesn't exist 的错误,但是查看数据库发现该表已经存在且字母也没有拼错. 原因:linux 上的mysql 默认是区分大小写导致的. 解决:改动mysql的配置文件,在my.cnf中的[mysqld]下面(位置不能错)加上lower_case_table_name=1这句(1表示不区分大小写,0区分大小写),保存重新启动mysql. 没有my.cnf文件,如