使用org.apache.derby.jdbc.ClientDriver连接Derby数据库报错无法连接如何解决?
Derby数据库XJ040/XSLAN连接错误修复方案
无法连接。无法使用org.apache.derby.jdbc.ClientDriver建立到jdbc:derby://localhost:1527/sample的连接(DERBY SQL错误:ERRORCODE: 40000,SQLSTATE: XJ040,SQLERRMC: 类加载器sun.misc.Launcher$AppClassLoader@1d44bcfa启动数据库'sample'失败,详情查看下一个异常。::SQLSTATE: XSLAN)
错误根本原因
该报错由两个关联的Derby异常组成:
- SQLSTATE XJ040:Derby服务端收到连接请求后,尝试加载指定的
sample数据库失败 - SQLSTATE XSLAN:底层触发原因,通常和连接参数错误、服务端配置异常、数据库文件损坏、版本不兼容四类问题相关
排查修复步骤
- 检查Derby网络服务运行状态
执行服务端startNetworkServer命令后,确认输出包含已准备好接受端口1527上的连接提示;本地环境可执行netstat -ano | findstr 1527(Windows)或lsof -i :1527(Linux/macOS)验证1527端口被Derby进程占用。 - 校验JDBC连接参数
如果是首次连接sample数据库,需要在连接串末尾追加;create=true参数自动创建库,完整连接串为jdbc:derby://localhost:1527/sample;create=true;同时检查连接串拼写、库名大小写是否正确。 - 排查版本与权限问题
确保客户端引入的derbyclient依赖版本与服务端运行的Derby版本完全一致,版本不兼容会触发类加载相关的启动错误;检查Derby服务端存储数据库文件的目录权限,确保运行Derby服务的用户对该目录有读写执行权限;如果服务端开启了身份验证,需要在连接参数中补充正确的用户名密码,格式为jdbc:derby://localhost:1527/sample;user=xxx;password=xxx。 - 修复损坏的数据库
如果sample库此前异常关闭导致文件损坏,可先删除已有的sample库目录,再用带create=true的连接串重新初始化数据库。
内容的提问来源于stack exchange,提问作者Rohit Pal
相关产品推荐
相关产品推荐

