衣带渐宽终不悔,为伊消得人憔悴,众里寻他千百度,蓦然回首,那人却在灯火阑珊处好通顺的句子哈哈

转了那么多弯,才明白问题就在一个地方。睡觉之前想明白了问题,还是经验太少。王国维的治学三境界:

昨夜西风凋碧树,独上高楼,望尽天涯路

衣带渐宽终不悔,为伊消得人憔悴

众里寻他千百度,蓦然回首,那人却在灯火阑珊处

数据源配置的问题

具体可以看 这里

本地连接可以,连接到服务器就是不行,愣是不行。我刚开始以为是“APPARENT DEADLOCK!!!”的问题,各种google方法,试了一遍还是不行。都快绝望了,晚上图书馆也在试还是没有解决。晚上睡觉的时候突然想起来,我MyEclipse好像屏蔽掉了所有往外的连接,( ̄▽ ̄;),真是搬起石头砸自己的脚,给自己设置障碍。早上一来,将连接放开,好问题解决。贴一下DBCP数据源的配置

  1. #数据库驱动
  2. driverClassName=com.mysql.jdbc.Driver
  3. #数据库连接地址
  4. url=jdbc:mysql://服务器地址:3306/dbWaterColInfo
  5. #用户名
  6. username=root
  7. #密码
  8. password=root
  9. #连接池的最大数据库连接数。设为0表示无限制
  10. maxActive=30
  11. #最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
  12. #接将被标记为不可用,然后被释放。设为0表示无限制
  13. maxIdle=10
  14. #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制
  15. maxWait=1000
  16. #超过removeAbandonedTimeout时间后,是否进 行没用连接(废弃)的回收(默认为false,调整为true)
  17. removeAbandoned=true
  18. #超过时间限制,回收没有用(废弃)的连接(默认为 300秒,调整为180)
  19. removeAbandonedTimeout=180
  1. //DBCP管理类,也是从网上找的
  2. package com.kuiblog.utils;
  3. import java.sql.Connection;
  4. import java.sql.DatabaseMetaData;
  5. import java.sql.SQLException;
  6. import java.util.Properties;
  7. import javax.sql.DataSource;
  8. import org.apache.commons.dbcp.BasicDataSourceFactory;
  9. import org.apache.commons.logging.Log;
  10. import org.apache.commons.logging.LogFactory;
  11. public class DBCPManager {
  12. private static final Log log = LogFactory.getLog(DBCPManager.class);
  13. private static final String configFile = "这里替换成你的实际配置文件";
  14. private static DataSource dataSource;
  15. static {
  16. Properties dbProperties = new Properties();
  17. try {
  18. dbProperties.load(DBCPManager.class.getClassLoader()
  19. .getResourceAsStream(configFile));
  20. dataSource = BasicDataSourceFactory.createDataSource(dbProperties);
  21. Connection conn = getConn();
  22. DatabaseMetaData mdm = conn.getMetaData();
  23. log.info("Connected to " + mdm.getDatabaseProductName() + " "
  24. + mdm.getDatabaseProductVersion());
  25. if (conn != null) {
  26. conn.close();
  27. }
  28. } catch (Exception e) {
  29. log.error("初始化连接池失败:" + e);
  30. }
  31. }
  32. private DBCPManager(){
  33. }
  34. /**
  35. * 获取链接,用完后记得关闭
  36. *
  37. * @see {@link DBManager#closeConn(Connection)}
  38. * @return
  39. */
  40. public static final Connection getConn() {
  41. Connection conn = null;
  42. try {
  43. conn = dataSource.getConnection();
  44. } catch (SQLException e) {
  45. log.error("获取数据库连接失败:" + e);
  46. }
  47. return conn;
  48. }
  49. /**
  50. * 关闭连接
  51. *
  52. * @param conn
  53. * 需要关闭的连接
  54. */
  55. public static void closeConn(Connection conn) {
  56. try {
  57. if (conn != null && !conn.isClosed()) {
  58. conn.setAutoCommit(true);
  59. conn.close();
  60. }
  61. } catch (SQLException e) {
  62. log.error("关闭数据库连接失败:" + e);
  63. }
  64. }
  65. }

使用DBCP需要导入两个包加一个log包。commons-dbcpcommons-poolcommons-logging

然后就可以放心大胆的使用了

数据库编码问题

在出现数据库编码问题之前我还遇到了一个小问题,那就是我通过DBUtils操作数据库,执行SELECT * FROM userInfos_t可以查询到所有的内容,然后参数化查询就不行,比如SELECT * FROM userInfos_t WHERE name='张三',但是SELECT * FROM userInfos_t WHERE id =2却可以,也是百思不得解,好吧。也是数据库编码的问题。虽然我在Navicat for mysql中看到的是'张三',但数据库编码方式并不是UTF8,所以我搜索是搜索不出来的。

  1. 首先查看数据库的字符集
  1. show variables like 'collation_%';

这是我修改之后的,原先的都是latin1

  1. 网上提到了很多解决方法,一定要仔细看。

    我的Mysql版本是5.7,做了如下修改成功了

    修改/etc/mysql/my.cnf

    1. [client]
    2. default-character-set=utf8
    3. [mysqld]
    4. default-storage-engine=INNODB
    5. character-set-server=utf8
    6. collation-server=utf8_general_ci

    怎么找my.cnf

    1. locate my.cnf
    2. //如果找不到的话
    3. updatedb,//然后在查找

    重启Mysql服务

    1. service mysqld restart

    也可以查看这篇文章

    来解决

    总结

    暂时的问题就这样多,用了DBUtil,没有用Hibernate,等以后学习学习再用。


  1. ### 文章首发于kuiblog.com。加油

MySql踩坑总结的更多相关文章

  1. CentOS7.4安装MySQL踩坑记录

    CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...

  2. MySql 踩坑小记

    MySql 踩坑一时爽,一直踩啊一直爽...   以下记录刚踩的三个坑,emmm... 首先是远程机子上创建表错误(踩第一个坑),于是将本地机器 MySql 版本回退至和远程一致(踩第二个坑),最后在 ...

  3. Asp.Net Core Identity+EFCore + Mysql踩坑记录

    搭建基础框架准备试试传说中的Identity,本以为很顺利,结果一路踩了N多坑 遂就把过程记录下来.方便自己以后查看,也希望能帮到遇到同样问题的朋友. 1.首先,引入Identity需要的类库,还有M ...

  4. 【MySql系列】MySql踩坑系列

    问题一:远程登录报错Host '192.168.181.201' is not allowed to connect to this MySQL server 解决: 问题二:MySql access ...

  5. 在 ASP.NET Core 中使用 MySql 踩坑记录

    使用 Pomelo.EntityFrameworkCore.MySql 生成 MySQL 数据库 关于如何使用请查看项目文档即可 组件地址:https://github.com/PomeloFound ...

  6. 【SQL】 MySql与SqlServer差异比较(MySql踩坑全集)

    本文主要记录将数据库从SqlServer移植到MySql的过程中,发现的各种坑爹问题.以SqlServer为主,记录MySql的差异性. 一.IF语句 首先MySql中的的IF语法不同. IF Con ...

  7. .NET+MySql 踩坑1

    换成MySql数据库后,遇到的问题: 已解决,但不理解的问题: var test = db.test; 报如下图错误: 加上DefaultIfEmpty()则解决. var test = db.Tes ...

  8. Metabase 从 H2 迁移到 MySQL 踩坑指南

    写在前面的话 首先如果你看到了这篇文章,可能你就已经指定 Metabase 是啥了,我这里还是简单的做个说明: Metabase is the easy, open source way for ev ...

  9. mysql踩坑

    com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value '****** ...

随机推荐

  1. ABP(现代ASP.NET样板开发框架)系列之10、ABP领域层——实体

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之10.ABP领域层——实体 ABP是“ASP.NET Boilerplate Project (ASP.NET样板 ...

  2. ABP源码分析四十三:ZERO的本地化

    ABP Zero模块扩展了ABP基础框架中的本地化功能,实现了通过数据库管理本地化的功能.其通过数据库保存本地化语言及其资源. ApplicationLanguage:代表本地化语言的实体类.一种语言 ...

  3. ABP源码分析四十四:ZERO的配置

    ABP Zero模块中需要配置的地方主要集中在三块:配置静态的role,配置外部认证源,以及配置本地化语言和资源. UserManagementConfig/IUserManagementConfig ...

  4. ★Kali信息收集~4.DNS系列

    ★.1host:DNS信息 参数: 一般情况下,host查找的是A,AAAA,和MX的记录 案例: DNS服务器查询  host -t ns 域名 A记录和MX记录查询  host 域名(host - ...

  5. 持续集成:CruiseControl.NET + VisualSVN.Server

    刚换了工作,有需要搭建一套持续集成的平台,做一下总结. 首先是我用到的工具: 上面缺少了Microsoft Fxcop,可以用来做代码校验,不过实际情况暂时还没有用到.主要的需求目前是,使用已发布的稳 ...

  6. c#如何判断webbrowser已经加载完毕

    最近有个小程序需要采集网页源代码,但有的网页中JS脚本又会生成额外的代码,比如http://www.cnblogs.com/lidabo/p/4169396.html 红框部分便是另外加载的代码. 此 ...

  7. 记一次使用 android 自带 WebView 做富文本编辑器之API、机型的兼容及各种奇葩bug的解决

    转载请声明出处(http://www.cnblogs.com/linguanh/) 目录 1,测试设备介绍 2,开源项目richeditor及CrossWalk的选择 3,遇到的bug及其解决方法 4 ...

  8. React.js深入学习详细解析

    今天,继续深入学习react.js. 目录: 一.JSX介绍 二.React组件生命周期详解 三.属性.状态的含义和用法 四.React中事件的用法 五.组件的协同使用 六.React中的双向绑定   ...

  9. 最适合作为Java基础面试题之Singleton模式

    看似只是最简单的一种设计模式,可细细挖掘,static.synchronized.volatile关键字.内部类.对象克隆.序列化.枚举类型.反射和类加载机制等基础却又不易理解透彻的Java知识纷纷呼 ...

  10. .Net语言 APP开发平台——Smobiler学习日志:如何实现快速跳转网页

    Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一.跳转网页代码(Button的Click事件) Private Sub Button1_ ...