主键不唯一

由于表定义中创建了主键约束,因此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. react开发

    webpack.config.js var webpack=require("webpack"); var htmlWebpackPlugin=require('html-webp ...

  2. Redis 慢日志

    redis的slowlog是redis用于记录记录慢查询执行时间的日志系统.由于slowlog只保存在内存中,因此slowlog的效率很高,完全不用担心会影响到redis的性能.Slowlog是Red ...

  3. 解决图片裁剪com.android.camera.action.CROP和intent.putExtra("return-data", true);

    最近在做一个图片上传,在上传之前需要对照片进行裁剪,遇到一个坑,在别的手机上运行都正常,在小米手机上却遇见一个问题,选中图片无法裁剪,直接闪退,目前已解决!之前出过问题的地方会标红 //选择图片 pr ...

  4. 数据管理 - 每天5分钟玩转 Docker 容器技术(147)

    本章将讨论 Kubernetes 如何管理存储资源. 首先我们会学习 Volume,以及 Kubernetes 如何通过 Volume 为集群中的容器提供存储:然后我们会实践几种常用的 Volume ...

  5. [poj1094]Sorting It All Out_拓扑排序

    Sorting It All Out poj-1094 题目大意:给出一些字符串之间的大小关系,问能否得到一个唯一的字符串序列,满足权值随下标递增. 注释:最多26个字母,均为大写. 想法:显然,很容 ...

  6. C语言实现Linux命令——od

    C语言实现Linux命令--od 实现要求: 复习c文件处理内容 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写M ...

  7. python 一致性哈希 分布式

    hash_ring # -*- coding: utf-8 -*- """ hash_ring ~~~~~~~~~~~~~~ Implements consistent ...

  8. Linux系统安装gcc/g++详细过程

    下载: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2 浏览: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/ ...

  9. DistBlockNet:A Distributed Blockchains-Based Secure SDN Architecture for IOT Network

    现有问题 随着IOT中智能设备多样性和数目的增加,IOT的灵活性,效率,可用性,安全性和可扩展性的问题越来越明显. 实验目标 按照高适应性,可用性,容错性,性能,可靠性,可扩展性和安全性的设计原则,构 ...

  10. javabean 是什么?

    JavaBean规范 Bean的中文含义是“豆子”,顾名思义,JavaBean是指一段特殊的Java类, 就是有默然构造方法,只有get,set的方法的java类的对象. 专业点解释是: JavaBe ...