说来惭愧,历时了几个星期的阅读文档和debug,才终于跑通了远程访问云服务器的MYSQL。
中间经历和学习文档、反复搭建各种和作者相同的工作环境、下载各种版本的jar包,百度碰到的各种问题。
最后的实现是在一篇带源码的文档的基础上做了些修改,参考文档和整个工程源码 含lib 在 http://download.csdn.net/download/xiashaohua/9974935,可以完成本地数据库访问。供大家参考。
数据库创建:
DROP DATABASE IF EXISTS sampledb;
CREATE DATABASE sampledb DEFAULT CHARACTER SET utf8;
USE sampledb;
##创建用户表
CREATE TABLE t_user (
user_id INT AUTO_INCREMENT PRIMARY KEY,
user_name VARCHAR(30),
credits INT,
password VARCHAR(32),
last_visit datetime,
last_ip VARCHAR(23)
)ENGINE=InnoDB;
##创建用户登录日志表
CREATE TABLE t_logon_log (
login_log_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
ip VARCHAR(23),
login_datetime datetime
);
##插入初始化数据
INSERT INTO t_user (user_name,password)
VALUES('admin','123456');
COMMIT;
没有达到预期用SSM(spring+mvc+mybatis)框架完成数据库连接的访问,但能操作数据库。(实际还有一个SSM的版本,但在tomcat上运行不稳定)。
以上代码先要在本地运行正常,确认好之后,再部署到云服务器。
部署过程有几点要注意下,不清楚的情况下,有时要多花几天的时间来debug。(先假定tomcat和mysql在服务器上已配置好,顺利的话1-2小时可完成,运气不好可能需要troubleshooting两天)
1. 我使用的是华为云服务器,centos7.0, 要在安全组了打开mysql的端口,默认是3306,以及8080. 有困难找客服或百度。截图示意。
登录控制台后点云服务器,再点名称/ID 下的蓝色字体
之后点安全组,再点ID的蓝色字体,新界面会看到添加规则,进行添加
最终完成后如下,
2. 可能出现一些mysql错误信息,可根据信息自行百度。
如下,有可能是jar包没导入,也有可能是数据库没创建,用户、密码错等,要根据自己的情况判断。
Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
下面这个在我这里的原因就是3306没在云服务器开放端口引起。
Cannot create PoolableConnectionFactory