jdbc+mysql常见报错总结
1.The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must...
原因: 使用了Mysql Connector/J 6.x以上的版本,然后就报了时区的错误
解决办法: 在配置url的时候不能简单写成 :
jdbc:mysql://localhost:3306/jsp_text
而是要写成 :
jdbc:mysql://localhost:3306/jsp_text?serverTimezone=UTC
2. java.sql.SQLException: No value specified for parameter 1(多人多义,非唯一)
-->
原因: 本人所用的数据库id并没有设置其主键自增功能,导致不能单传其他两个属性
String sql_insert="";
PreparedStatement pst=conn.prepareStatement("insert into user(title,content) values(?,?)");
pst.setString(1, request.getParameter("title"));
pst.setString(2, request.getParameter("content"));
解决办法:在mysql数据库中设置此语句将id更改为自增,或者设置属性时选择“AI”(但是下方的auto increase框不能点)
ALTER TABLE `jsp`.`user`
CHANGE COLUMN `id` `id` int NOT NULL AUTO_INCREMENT ;
3. Mysql错误1452 - Cannot add or update a child row: a foreign key constraint fails 原因及解决方法
原因:设置的外键与另一个表中的唯一索引列(一般是主键)中的值不匹配
办法:删除要成为外键的列,再次创建并默认为NULL
坑点:想了半天,明明外键Spno都是NULL,怎么就一直还报这个错,后来才发现,我往NULL加了引号!!!逐渐失去耐心。。。
正解参考:
insert
into course
values('1', '数据库', NULL, 4);
4. Mysql 插入中文错误:Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'course' at row 1
原因:数据库的编码格式为latin1 而我要将utf8的中文插入到数据库中。
办法:
查看数据表的编码: show create table Student; 修改表的编码方式: alter table Student default character set utf8; (该命令用于将表Student的编码方式改为utf8) 修改字段的编码方式: alter table Student change Sname Sname varchar(20) character set utf8; 该命令用于将表Student中Sname字段的编码方式改为utf8
坑点:修改字段时注意Sname Sname(与前面字段名称一致) verchar(20)(必须是在表中定义该字段时的格式)
正解参考:
alter table student default character set utf8;
alter table sc default character set utf8;
alter table course default character set utf8; /*修改字段*/
alter table student change Sname Sname char(20) character set utf8;
alter table student change Ssex Ssex char(1) character set utf8;
5. Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE tha
原因:mysql在执行删除更新语句时报这种错误,是因为在mysql在safe-updates模式中,如果你where后跟的条件不是主键id,那么就会出现这种错误
解决方法:
1、SET SQL_SAFE_UPDATES = 0;执行该命令更改mysql数据库模式。
2、在where判断条件中跟上主键id 例如:delete from firstmysqldatabase.user where UserName='zhangsan' and ID>=0;
6. 怎样解决jsp:include标签在包括html文件时遇到的乱码问题
原因:当jsp在include的时候,被include的内容使用何种编码是由被include页面自身决定的,而决定方式是通过<%@ page lanage="java" pageEncoding="UTF-8" contentType="text/html;UTF-8" %>这种指令来决定的,而html页面中并没有这种指令。
解决方法:
第一种办法:就是不要include html页面,改成include jsp页面
第二种办法:在web.xml中通过配置来告诉web应用,全部html文件输出时都採用UTF-8的编码,配置内容例如以下:
<jsp-config> <jsp-property-group> <url-pattern>*.html</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config>
7. JavaBean找不到属性值
原因:以为是包路径导错了研究很久,实际是因为JavaBean中对class的属性有规范
在 .class中定义的属性名必须首字母是小写
重点来了,因为老师让我们用名字缩写为前缀,所以忽略了set/ get方法的规范!!!!(谢谢老师让我重新复习)
解决方法:
正解是这样: 例如属性名为zyddd,则正确的set方法名是:setZyddd(即set后面是你定义的属性名且首字母一定要大写)
当jsp文件引用时:
<jsp:useBean id="h" class="test.testbean" scope="page"/> <jsp:getProperty name="h" property="test"/>
此时javabean映射了getTest方法 返回了Test属性
完成~
8.连接数据库,查询条件为汉字,查询无结果解决办法
开始我直接写好了一个普通查询,一个模糊查询,发现模糊查询数字是可以的,然后查询中文,不出数据,代码也不报错
原因:在mysql数据连接的时候需要指定字符集
解决办法:该问题为编码问题,需要进行参数转码,设置连接为:
url="jdbc:mysql://localhost:3306/db_pos?useUnicode=true&characterEncoding=utf8"
9. jsp中session.getAttribute()取值为空
经过测试session中的值是可以保存的,这种问题一般就检查下取值的时候是否对象不匹配导致的。
解决办法:
看看有没有调用这句:session.removeAttribute("sessionid");如果调用了就是取消掉了所赋的值,所以会null
response.sendRedirect("forward.jsp");
因为用的是重定向,
重定向是不共享session中的数据的,所以在下一个页面是获取不到session中的东西的。
而 request.getRequestDispatcher("forward.jsp").forward(request, response);
是转向,
转向是共享session中的数据,因此这种方式是可以获取到session中的数据的。
最新文章
- overflow:hidden清除浮动原理
- 常用Git代码托管服务分享
- android系统中自带的一些ThemeStyle
- 缓解 SQL Server has encountered 727 occurrence(s) of I/O requests taking longer than 15 seconds
- Http协议:彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法
- CodeForces#275--DIV 2--B(BinarySearch)(!!)
- Linux 基础入门(新版)”实验报告一~十二
- bootstrap学习笔记<;十一>;(导航条)
- jQuery的选择器中的通配符[id^=&#39;code&#39;]或[name^=&#39;code&#39;]
- x/nfu-用gdb查看内存
- 离线使用nuget
- oracle 集合变量以及自定义异常的用法
- 测试工具——JMeter
- Android忽略文件以及.gitignore规则不生效的可行解决方案
- 学习vi和vim编辑器(5):越过基础的藩篱
- Android 性能测试优质实践汇总
- 菜鸟脱壳之脱壳的基础知识(四)——利用ESP定律来寻找OEP
- 树莓派配置tomcat
- Asp.net中GridView使用详解(很全,很经典 转来的)
- Redis提供的持久化机制(RDB和AOF)【转载】