折腾了大半天,卡在idea怎么连接数据库这一步,明明参数抄的和别人一模一样,点测试连接就是报错,弹窗跳出来一串看不懂的提示,来回删配置、重启软件,耗掉快两个小时。
最先的想法很简单,面板里面找到数据库的选项,填地址、端口、账号密码,选好数据库类型,以为点测试就能通。哪知道驱动那块是空的,当时没留意那个小字提示,直接跳过,结果每次提交都失败,反复试了四五次,连软件缓存都清过,问题还是原样摆在那里。
后来才反应过来,不是地址或者账号输错了,是驱动包没有加载到位。自带的自动下载有时候会卡住,网络不稳的时候下不全,文件缺一点,连接动作根本发起不了。换了个路子,手动去拿对应版本的驱动文件,在配置页面选中本地的jar包,再重新填上连接信息。
版本对上很关键。
数据库本身的版本和驱动版本差太多,很容易出现兼容问题,之前随手下了个最新版驱动,服务器上跑的是老版本库,连上之后要么拿不到表结构,要么时不时断开,排查的时候还误以为是权限没开,跑去数据库那边改用户权限,白白浪费时间。填url的时候,后面那一串附加参数也不能随便抄,字符集、时区这些配置,根据自己环境取舍,没必要一股脑全部加上,多余参数有时候也会干扰连接。
配置页面填完信息,先点测试连接,等它弹出成功提示,再去保存这个配置。保存之后,左侧列表里面能看到库里面的表,点开可以直接查看字段,简单写查询语句也能执行,这一步才算通了。有一次测试显示成功,但是写代码里面用同样的url去连接,又连不上,才发现界面上的配置和代码里的连接串是两套东西,不要混在一起,界面工具只是用来查看调试,项目代码里还要单独写连接逻辑,不能直接复用界面配置。
这只是我的个人感受,不是标准答案,环境不一样,碰到的报错原因也会不一样。
还有一次帮旁边同事看,他所有配置都没问题,防火墙拦住了端口,本地能访问,工具这边就是超时,排查方向完全不在idea本身上面。这类外部因素很容易被忽略,盯着软件内部反复调整,很难找到根源。有的开发习惯用插件辅助连接,有的就只用原生自带的数据库工具,两种方式我都试过,插件功能多一点,但臃肿,自带的轻量,基础查看足够,看自己平时的使用习惯选就行,没有哪一种一定更好。
连接成功之后也不是一劳永逸,长时间闲置之后,连接会自动失效,再去查询的时候报连接关闭,需要重新刷新或者重连。平时写项目,正式代码里面一般不会直接用这种工具连接,更多是调试阶段,用来快速核对表结构,跑简单sql,验证账号权限是否正常。别把这个工具的连接方式当成项目持久层的写法,两者用途本来就不一样。
那天调试完,关掉页面,顺手把下载好的驱动包单独存到项目目录外面,免得换电脑或者重装软件的时候,又要重新找一遍。