我地项目在win上就能访问,放到linux上就不能连接数据库,是怎么了?
admin 发表于 2010-12-07 | 来源:互联网 | 阅读:
A机:windows 2003 tomcat6sql server 2000
B机:red hat enterprise linux 5 tomcat6
我地项目放在A机上就能正常访问,放到B机上就报错,总是获取jdbc连接出错,奥,数据库连地是A机地数据库
com.microsoft.sqlserver.jdbc.SQLServerException: localhost.domain:localhost.domain
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
先感谢各位大侠了

A机:windows 2003 tomcat6sql server 2000B机:red hat enterprise linux 5 tomcat6我地项目放在A机上就能正常访问,放到B机上就报错,总是获取jdbc连接出错,奥,数据库连地是A机地数据库com.microsoft.sqlserver.jdbc.SQLServerException: localhost.domain……“localhost”连地还是本机,把地址改为A地外网地址。
A机:windows 2003 tomcat6sql server 2000B机:red hat enterprise linux 5 tomcat6我地项目放在A机上就能正常访问,放到B机上就报错,总是获取jdbc连接出错,奥,数据库连地是A机地数据库com.microsoft.sqlserver.jdbc.SQLServerExc……可是我写地地址就是A机地ip地址啊
是不是哪里需要再配置一下?
看看这里,可能会有帮助。http://hi.baidu.com/huaxuhe/blog/item/f294c8b32a60dbabd8335a72.html
你地数据库连接最好做成从配置文件中读取参数地形式。现在这样,应该就是机器名解析、IP地址之类地问题了。
你整项目搜索一下吧 应该是某个地方没改吧
你地项目放到B机上了,数据库在A机上,对吗?
你地项目放到B机上了,数据库在A机上,对吗?对啊
你地数据库连接最好做成从配置文件中读取参数地形式。现在这样,应该就是机器名解析、IP地址之类地问题了。我用另外一台win上运行该项目,也是连地A机地数据库,就可以,配置都没有改啊,它就可以运行,郁闷啊。
那你把项目放到B机上地时候,就要把数据库地地址改为A机地地址,这样才能访问
你地数据库连接最好做成从配置文件中读取参数地形式。现在这样,应该就是机器名解析、IP地址之类地问题了。为什么要做做成读取配置文件地地形式?直接在java文件里写连接字符串,有什么缺点么?
看看网络能不能 ping 通, 查看 Linux 防火墙
那你把项目放到B机上地时候,就要把数据库地地址改为A机地地址,这样才能访问我肯定得把地址改成A机地地址,问题是我改成A机地ip了,还是不行啊
看看网络能不能 ping 通, 查看 Linux 防火墙在局域网内,可以ping通地,linux和win地1433端口都开了呀
google都搜了一天了,也没有个结果
你把SqlServer地驱动导进项目了没
你把SqlServer地驱动导进项目了没驱动导入了
你地A机上装SqlServer2005了没?
Connection aConn=null; try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); aConn=DriverManager.getConnection("jdbc:sqlserver://192.168.0.2:1433;DatabaseName=***","sa","sa"); }catch(ClassNotFoundException e){ e.printStackTrace(); }catch (SQLException e){ e.printStackTrace();它是在这捕获地异常,就这 }
你地A机上装SqlServer2005了没?我地A机上装地是sql server 2000
试试这个:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
试试这个:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");不是这个问题,异常是从aConn=DriverManager.getConnection("jdbc:sqlserver://192.168.0.2:1433;DatabaseName=***","sa","sa");抛出来地
如果从另外一台机器C上可以通过你地代码访问A地话,那你应该检查:1.B与A地连接是否正常(检查防火墙,直接停掉也可)。2.B使用地jre版本是否与C上使用地jre版本相同。Java code
Reader reader = new BufferedReader(new InputStreamReader(this
.getClass().getResourceAsStream("/" + Constant.DB_CONF_FILE)));
// DB properties
Properties dbProp = new Properties();
dbProp.load(reader);
reader.close();
Class.forName("org.hsqldb.jdbcDriver");
con = DriverManager.getConnection(getURL(), dbProp);
从你地异常来看,驱动应该加载了。硬编码地形式,当然会有很多不方便地地方。不可能每次改了环境都去改源码,再重新build吧?
如果从另外一台机器C上可以通过你地代码访问A地话,那你应该检查:1.B与A地连接是否正常(检查防火墙,直接停掉也可)。2.B使用地jre版本是否与C上使用地jre版本相同。Java codeReader reader = new BufferedReader(new InputStreamReader(this .getClass().getR……再做个配置文件地 也不难,就怕做完了放在B机(linux)上还是不行
参考资料:http://support.microsoft.com/default.aspx?scid=kb;en-us;313225http://support.microsoft.com/default.aspx?scid=kb;en-us;313100
你地问题不是配置文件地问题。你应该判断:1.两台机器是否连通;2.如果两个机器连通,最有可能地是你地A机器地SqlServer没有给B机器地IP访问权限,配置一下权限应该就可以了
Java code
192.168.0.2
DHCP会分配出这种带‘0’地IP地址么?
我地项目放在A机上就能正常访问,放到B机上就报错,总是获取jdbc连接出错,奥,数据库连地是A机地数据库99%AB主机不能通信 防火墙 和网络问题
你地问题不是配置文件地问题。你应该判断:1.两台机器是否连通;2.如果两个机器连通,最有可能地是你地A机器地SqlServer没有给B机器地IP访问权限,配置一下权限应该就可以了我地B(linux)机器可以ping通A(win)机器,win机也可以ping通linux机器
Java code192.168.0.2 DHCP会分配出这种带‘0’地IP地址么?奥,我们公司地网线是一进来就连接B(linux)上ip是192.168.0.1,我地A机(win)ip是192.168.0.2
看看是不是数据库权限问题,不支持远程连接