MySQL导致错误的语句
主键不唯一
由于表定义中创建了主键约束,因此MySQL将会确保重复主键不会被插入到数据表中。
INSERT INTO person
(person_id, fname, lname, gender, birth_date)
VALUES (1, 'Zifeiy2', 'Haha', 'M', '1991-01-06');
报错:
[Err] 1062 - Duplicate entry '1' for key 'PRIMARY'
不存在的外键
favorite_food的表定义再person_id列上创建了外键,该约束确保favorite_food表中所输入的person_id列的值存在于person表中。下面显示了创建行时违背这一约束的结果:
INSERT INTO favorite_food (person_id, food) VALUES (999, 'zifeiy');
报错:
[Err] 1452 - Cannot add or update a child row: a foreign key constraint fails (`mydb`.`favorite_food`, CONSTRAINT `fk_fav_food_person_id` FOREIGN KEY (`person_id`) REFERENCES `person` (`person_id`))
在此情况下,由于favorite_food表的部分数据依赖于person表,因此可以将favorite_food表视为子表,而将person表视为父表,如果需要,如果需要同时将两个表输入数据,那么在向favorite_food表输入数据之前,必须现在父表中创建一行。
列值不合法
Person表中的gender列被限制为只容许'M'(男性)或'F'(女性)值,如果试图将该列设为任何其他值,都将会收到如下响应:
UPDATE person SET gender = 'Z' WHERE person_id = 1;
报错:
[Err] 1265 - Data truncated for column 'gender' at row 1
无效的日期转换
如果构建一个用于产生日期列的字符串,那么该字符串必须符合要求的格式,否则将会接受到一个错误。下面的例子中,所使用的日期格式没有与默认的日期格式“YYYY-MM-DD”像匹配:
UPDATE person SET birth_date = 'DEC-21-1999' WHERE person_id = 1;
报错:
UPDATE person SET birth_date = 'DEC-21-1999' WHERE person_id = 1;
通常情况下,显式地指定字符串格式是比依赖默认格式更好的做法。下面的语句使用str_to_date函数指定所用字符串格式:
UPDATE person SET birth_date = STR_TO_DATE('DEC-21-2001', '%b-%d-%Y') WHERE person_id = 1;
这样做不仅使服务器感到满意,Zifeiy也会感到开心。
MySQL导致错误的语句的更多相关文章
- MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause
MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause 201 ...
- replicate-do-db参数引起的MySQL复制错误及处理办法
replicate-do-db配置在MySQL从库的my.cnf文件中,可以指定只复制哪个库的数据.但是这个参数有个问题就是主库如果在其他的schema环境下操作,其binlog不会被从库应用,从而出 ...
- MySQL常见错误类型
MySQL常见错误类型:1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010: ...
- 10 个 MySQL 经典错误【转】
Top 1:Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行) 问题还原 mysql> show variables like '%max_connec ...
- 深入MySQL(四):MySQL的SQL查询语句性能优化概述
关于SQL查询语句的优化,有一些一般的优化步骤,本节就介绍一下通用的优化步骤. 一条查询语句是如何执行的 首先,我们如果要明白一条查询语句所运行的过程,这样我们才能针对过程去进行优化. 参考我之前画的 ...
- 技术分析 | 浅谈在MySQL体系下SQL语句是如何在系统中执行的及可能遇到的问题
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 SQL语句大家并不陌生,但某种程度上来看,我们只是知道了这条语句是什么功能,它可 ...
- 在本地计算机无法启动MYSQL服务错误1067进程意外终止
在本地计算机无法启动MYSQL服务错误1067进程意外终止 这种情况一般是my.ini文件配置出错了, 你可以删除系统目录下的my.ini文件, 把下面的内容重新写入my.ini文件试试, 要适当地改 ...
- MySQL启动错误排查
一般情况下mysql的启动错误还是很容易排查的,但是今天我们就来说一下不一般的情况.拿到一台服务器,安装完mysql后进行启动,启动错误如下: 有同学会说,哥们儿你是不是buffer pool设置太大 ...
- MySQL数据库错误server_errno=2013的解决
MySQL数据库错误server_errno=2013的解决 一组MySQL复制环境中的Master意外掉电,重启后Master运行正常,但该复制环境中的其它slave端,Error Log中却抛出的 ...
随机推荐
- Thinkjs关系数据库学习——查询数据
模型提供了多种方法来查询数据: find 查询单条数据 select 查询多条数据 count 查询总条数 countSelect 分页查询数据 max 查询字段的最大值 avg 查询字段的平均值 m ...
- Django--基本篇:项目结构与设计模式(MVC)
Django在项目开发中有着结构清晰.层次明显.容易编写理解查阅demo的优点,那么我们来个小案例具体看看. 一.项目结构简析: 我们按照上一篇中的开发流程步骤创建一个新项目myblog,项目下 ...
- Beta版本敏捷冲刺每日报告——Day2
1.情况简述 Beta阶段第二次Scrum Meeting 敏捷开发起止时间 2017.11.3 08:00 -- 2017.11.3 22:00 讨论时间地点 2017.11.3晚9:00,软工所实 ...
- 展示博客(Beta版本)
团队:xjbz 1. 团队成员博客,源码仓库地址. coding:https://git.coding.net/z404395979/xjbz.git 钟平辉(071):http://www.cnbl ...
- iOS开发-FFmpeg深入分析
FFmpeg是相当强大的多媒体编解码框架,在深入分析其源代码之前必须要有基本的多媒体基础知识,否则其源代码会非常晦涩难懂.本文将从介绍一些基本的多媒体只是,主要是为研读ffmpeg源代码做准备,比如一 ...
- docopt——好用的Python命令行参数解释器
Qingchat使用的命令行参数解释器是 docopt,用下来感觉非常棒,所以决定介绍一下这个库.( 奉劝各位看官,真爱生命,远离argparse. ) 介绍 docopt 本质上是在 Python ...
- 要学好JAVA要注意些什么?
从自学开始到参加系统的学习JAVA已经差不多有1个月了的时间了,在这段时间以前我也和很多人一样在网上盲目的搜罗一些视频来自己啃,随着时间的积累,对JAVA的认识也有了一定的提升,之前可能因为在IT咨询 ...
- [Android FrameWork 6.0源码学习] View的重绘过程之WindowManager的addView方法
博客首页:http://www.cnblogs.com/kezhuang/p/关于Activity的contentView的构建过程,我在我的博客中已经分析过了,不了解的可以去看一下<[Andr ...
- SAN LUN Mapping出错导致文件系统共享冲突,数据恢复成功
[用户单位] 中国联通某分公司[数据恢复故障描述] SUN 光纤存储系统,中心存储为6枚300G硬盘组成的RAID6,划分为若干LUN,MAP到不同业务的服务器上,服务器上运行SUN SOLAR ...
- CentOS搭建Git服务器及权限管理
声明:本教程,仅作为配置的记录,细节不展开,需要您有一点linux的命令基础,仅作为配置参考. 1. 系统环境 系统: Linux:CentOS 7.2 64位 由于CentOS已经内置了OpenSS ...