主键不唯一

由于表定义中创建了主键约束,因此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导致错误的语句的更多相关文章

  1. 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 ...

  2. replicate-do-db参数引起的MySQL复制错误及处理办法

    replicate-do-db配置在MySQL从库的my.cnf文件中,可以指定只复制哪个库的数据.但是这个参数有个问题就是主库如果在其他的schema环境下操作,其binlog不会被从库应用,从而出 ...

  3. MySQL常见错误类型

    MySQL常见错误类型:1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010: ...

  4. 10 个 MySQL 经典错误【转】

    Top 1:Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行) 问题还原 mysql> show variables like '%max_connec ...

  5. 深入MySQL(四):MySQL的SQL查询语句性能优化概述

    关于SQL查询语句的优化,有一些一般的优化步骤,本节就介绍一下通用的优化步骤. 一条查询语句是如何执行的 首先,我们如果要明白一条查询语句所运行的过程,这样我们才能针对过程去进行优化. 参考我之前画的 ...

  6. 技术分析 | 浅谈在MySQL体系下SQL语句是如何在系统中执行的及可能遇到的问题

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 SQL语句大家并不陌生,但某种程度上来看,我们只是知道了这条语句是什么功能,它可 ...

  7. 在本地计算机无法启动MYSQL服务错误1067进程意外终止

    在本地计算机无法启动MYSQL服务错误1067进程意外终止 这种情况一般是my.ini文件配置出错了, 你可以删除系统目录下的my.ini文件, 把下面的内容重新写入my.ini文件试试, 要适当地改 ...

  8. MySQL启动错误排查

    一般情况下mysql的启动错误还是很容易排查的,但是今天我们就来说一下不一般的情况.拿到一台服务器,安装完mysql后进行启动,启动错误如下: 有同学会说,哥们儿你是不是buffer pool设置太大 ...

  9. MySQL数据库错误server_errno=2013的解决

    MySQL数据库错误server_errno=2013的解决 一组MySQL复制环境中的Master意外掉电,重启后Master运行正常,但该复制环境中的其它slave端,Error Log中却抛出的 ...

随机推荐

  1. 设计模式 --> (12)装饰模式

    装饰模式 时常会遇到这样一种情况,我已经设计好了一个接口,并且也有几个实现类,但是这时我发现我设计的时候疏忽了,忘记了一些功能,或者后来需求变动要求加入一 些功能,最简单的做法就是修改接口,添加函数, ...

  2. [bzoj1707]tanning分配防晒霜_贪心+排序

    tanning分配防晒霜 bzoj-1707 题目大意:给出每个点所能接受的区间,给出m个可以使单个点固定在一个值的方法,每种方法能使用有限次. 注释:1<=N<=2500 想法:这题是瞎 ...

  3. 20165226 2017-2018-3 《Java程序设计》第5学习总结

    20165226 2017-2018-3 <Java程序设计>第5周学习总结 教材学习内容总结 第七章 内部类与异常类 匿名类创建对象: new Bank() { 匿名类的类体 }: 异常 ...

  4. [日常] Codeforces Round #441 Div.2 实况

    上次打了一发 Round #440 Div.2 结果被垃圾交互器卡掉 $200$ Rating后心情复杂... 然后立了个 Round #441 要翻上蓝的flag QAQ 晚饭回来就开始搞事情, 大 ...

  5. ES5和ES6两个值的比较

    ES5比较两个值是否相等 1)相等运算符 (==):比较两个数值是否相等,自动转换类型后再进行比较 2)全等运算符(===):比较两个比较值的数值和类型是否相等 ES5的特殊: ES6提出" ...

  6. Session的过期时间如何计算?

    在生成session的时候,会设置一个session过期时间.session的过期时间并不是从生成session对象开始计算,超过过期时间,session就失效了. 而是每当一个浏览器请求,sessi ...

  7. Flask 学习 十一 关注者

    数据库关系 1.1多对多关系 添加第三张表(关联表),多对多关系可以分解成原表和关联表之间的两个一对多的关系 多对多仍然使用db.relationship()方法定义,但是secondary参数必须设 ...

  8. HTML,文字两端对齐

    text-align: justify样式的意思是文字两端对齐,但是有时候你会发现这东西不起左右,比如在div标签中的文字. 解决方法:在div中放一个空的span标签,并使用下面的样式. .just ...

  9. python 字符串和字典

    一.字符串操作 name = "my name is \t {name} and i am {year} years old" 1.首字母大写 print(name.capital ...

  10. 详解JavaScript对象继承方式

    一.对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数,所以可使 Parent 构造函数成为 Children 的方法,然 ...