问题:使用典型的SSH方式开发JAVA系统,数据库使用MySQL 5.5,用mysql-connector-java库进行连接。从开发到在客户方部署一切正常。后来客户要求部署在另外一台服务器,该服务器已经运行了一个MySQL为别的系统提供服务,但用的比较旧的版本,所以决定另外安装MySQL 5.5,并另外启动进程,同时在My.ini把端口号从默认的3306改为3307,以避免冲突。
初始化好数据后,在我们开发的系统里把连接字符串jdbc:mysql://localhost:3306/xxxx改为jdbc:mysql://localhost:3307/xxxx。运行系统,提示能连接到MySQL,却找不到数据库xxxx。
解决:
1、查看日志,发现是连接到旧版本的MySQL
2、以为连接字符串写错,但经过网上搜索,确定没写错
3、想跟踪mysql-connector-java,maven cetral没提供源代码……
4、网上搜索,没发现类似的情况
5、灵机一动,会不会mysql-connector-java版本问题,我用的是5.1.9,改为最新5.1.18,编译失败,退而求次,改用5.1.10,编译成功。重新运行系统,成功打开数据库。
可以确定,这是5.1.9的BUG,由此得出结论,以后用库还是按老规矩,尽量用尾号为偶数的版本。