我的项目在win上就能访问,放到linux上就不能连接数据库,是怎么了?

songminghong 2010-12-03 03:34:14
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)
先谢谢各位大侠了
...全文
492 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
探寻自己 2011-03-09
  • 打赏
  • 举报
回复
房主怎么解决的呀,没结贴?
skqqq783 2010-12-08
  • 打赏
  • 举报
回复
服务名有关吧,你用ip带上端口号加服务名试试呐···
songminghong 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 wang12 的回复:]
看看是不是数据库权限问题,不支持远程连接
[/Quote]
不会的,我用另外一台机器,也是win就可以连接那台A机的数据库的
wang12 2010-12-06
  • 打赏
  • 举报
回复
看看是不是数据库权限问题,不支持远程连接
songminghong 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 so_so_ 的回复:]

Java code
192.168.0.2

DHCP会分配出这种带‘0’的IP地址么?
[/Quote]
奥,我们公司的网线是一进来就连接B(linux)上ip是192.168.0.1,我的A机(win)ip是192.168.0.2
songminghong 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 acjlearner 的回复:]

你的问题不是配置文件的问题。你应该判断:1.两台机器是否连通;2.如果两个机器连通,最有可能的是你的A机器的SqlServer没有给B机器的IP访问权限,设置一下权限应该就可以了
[/Quote]
我的B(linux)机器可以ping通A(win)机器,win机也可以ping通linux机器
xxy8100 2010-12-03
  • 打赏
  • 举报
回复
我的项目放在A机上就能正常访问,放到B机上就报错,总是获取jdbc连接出错,奥,数据库连的是A机的数据库

99%AB主机不能通信 防火墙 和网络问题
so_so_ 2010-12-03
  • 打赏
  • 举报
回复
192.168.0.2

DHCP会分配出这种带‘0’的IP地址么?
ACJLearner 2010-12-03
  • 打赏
  • 举报
回复
你的问题不是配置文件的问题。你应该判断:1.两台机器是否连通;2.如果两个机器连通,最有可能的是你的A机器的SqlServer没有给B机器的IP访问权限,设置一下权限应该就可以了
ihefe 2010-12-03
  • 打赏
  • 举报
回复
参考资料:

http://support.microsoft.com/default.aspx?scid=kb;en-us;313225

http://support.microsoft.com/default.aspx?scid=kb;en-us;313100
songminghong 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 bayougeng 的回复:]
如果从另外一台机器C上可以通过你的程序访问A的话,那你应该检查:
1.B与A的连接是否正常(检查防火墙,直接停掉也可)。
2.B使用的jre版本是否与C上使用的jre版本相同。

Java code
Reader reader = new BufferedReader(new InputStreamReader(this
.getClass().getR……
[/Quote]
再做个配置文件的 也不难,就怕做完了放在B机(linux)上还是不行
bayougeng 2010-12-03
  • 打赏
  • 举报
回复
如果从另外一台机器C上可以通过你的程序访问A的话,那你应该检查:
1.B与A的连接是否正常(检查防火墙,直接停掉也可)。
2.B使用的jre版本是否与C上使用的jre版本相同。
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吧?
songminghong 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 acjlearner 的回复:]
试试这个:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
[/Quote]
不是这个问题,异常是从aConn=DriverManager.getConnection("jdbc:sqlserver://192.168.0.2:1433;DatabaseName=***","sa","sa");
抛出来的
ACJLearner 2010-12-03
  • 打赏
  • 举报
回复
试试这个:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
songminghong 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 acjlearner 的回复:]
你的A机上装SqlServer2005了没?
[/Quote]
我的A机上装的是sql server 2000
songminghong 2010-12-03
  • 打赏
  • 举报
回复
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();
它是在这捕获的异常,就这
}
ACJLearner 2010-12-03
  • 打赏
  • 举报
回复
你的A机上装SqlServer2005了没?
songminghong 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 acjlearner 的回复:]
你把SqlServer的驱动导进项目了没
[/Quote]驱动导入了
ACJLearner 2010-12-03
  • 打赏
  • 举报
回复
你把SqlServer的驱动导进项目了没
songminghong 2010-12-03
  • 打赏
  • 举报
回复
google都搜了一天了,也没有个结果
加载更多回复(14)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧