报错内容如:1701 - Cannot truncate a table referenced in a foreign key constraint 一.为什么要使用truncate 使用truncate截断表速度快,不仅可以清空表数据,而且可以使自增列重新从1开始 二.出现错误的原因 Mysql中如果表和表之间建立了外键约束,则无法删除表及修改表结构 三.解决方案 在Mysql中取消外键约束:  SET FOREIGN_KEY_CHECKS=0;     执行 truncate tablen…
清空具有外键约束的表时报ERROR 1701(42000)的解决   mysql> truncate table t_users;ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (`test`.`t_user_action`, CONSTRAINT `t_action_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `test`.`t_use…
注:本文来源于<oracle查询某张表的外键(最终解决办法)> 一:几个查询表外键的脚本 select b.table_name, b.column_name from user_constraints a inner join user_cons_columns b on a.constraint_name = b.constraint_name where a.r_constraint_name in ( select e.constraint_name from user_constra…
回顾4 连接查询: 连接多张表到一起,不管记录数如何,字段数一定会增加. 分类:内连接,外连接.自然连接,交叉连接, 交叉连接:cross join (笛卡尔积) 内连接:inner join,左右两张表有连接条件匹配(不匹配自动忽略) 外连接:left/right join 主表的一条记录一定会存在匹配保留副表数据,否则置空 自然连接:natural join 自动匹配(相同字段名) PHP操作:mysql Php充当客户端,开启mysql扩展 连接认证:mysql_connect;执行sql…
目录 自增特性 外键 外键关系 外键创建 外键的约束效果 级联更新级联删除 多对多关系 一对一关系 表查询关键字 select与from where筛选 group by分组 练习 关系练习 查询练习 自增特性 1.如果你手动添加自增字段的值,并且你的添加的值比之前的自增字段的值大,那么会从你添加的值开始自增. create table t( id int primary key auto_increment, name varchar(16) ); # 添加数据 insert into t(n…
https://www.cnblogs.com/DragonFire/p/6949767.html mySQL练习-主外键多表查询 MySQL练习-主外键多表查询 练习: 1.建立表关系: 请创建如下表,并创建相关约束 创建表并建立表关系 表数据 补充联合唯一 2.操作练习: 1.自行创建测试数据 测试失败数据 2.查询"生物"课程比"物理"课程成绩高的所有学生的学号: 多表嵌套查询 3.查询平均成绩大于60分的同学的学号和平均成绩: HAVING用法 4.查询所有…
title: 删除带外键的表[foreign key constraint fails]报错 date: 2018-08-02 21:59:06 tags: 数据库 --- 遥想当时正在学hibernate的时候,刚好学到了一对多,多对多的关联操作.时间也正是刚好在那是有了一个项目,把各表的间的结构还理清,俗话说学到就要用到,就把这些表的结构都能配置级联关系的都把它配上.没想到就在这里给自己放了个小坑.前几天在一个帖子中看到别人说,尽量少配些ORM约束,数据库的外键约束什么的.当时还不以为然.没…
无外键多表查询时编写hql,直接使用逗号分隔表,where作为联合查询条件进行查询.查询出来的结果可为两种,List<List<Object>>或者List<Map<String,Object>>.这时候需要使用下面语句限定查询返回结果类型. //List<Map<String,Object>> Query query = getSessionFactory().openSession().createHQLQuery(querySt…
从mysql数据库中导出正常数据库的脚本语句,而后使用脚本语句创建数据库的过程中,执行语句提示Can't Create Table 'XXX' erro150的错误,语句执行中断,创建table失败,仔细分析相关语句发现导致此错误的原因为创建的外键和关联的表的主键类型不匹配. 仔细查看被执行的语句,发现无法执行的table语句中含有CONSTRAINT关键字和FOREIGN KEY 外键关键字,因此判断该table的创建必须在外键表创建完成之后才可执行,找不到引用外键的表导致语句执行失败,遂先找…
此时有两种方法,解决1.删除外键约束,删除该表,在重建外键约束--查询外键约束select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,R_CONSTRAINT_NAME from ALL_CONSTRAINTS WHERE constraint_type='R' and owner='SCOTT'; 删掉外键约束 alter table emp drop constraint fk_deptno; truncate  表后如果仍然想要关联原来的子表,重…
ls /etc/rc.d/init.d/mysql56service mysql56 start ps aux |grep "mysql"|grep "socket=" --colormysql -S/var/run/mysqld/mysql56.sock[root@localhost ~]# service mysql56 startStarting MySQL.. SUCCESS! [root@localhost ~]# mysql -S/var/run/mys…
1. 显示数据库列表 show databases; # 查看当前所有数据库 show databases \G   #以行的方式显示 2. 在命令行中,执行sql语句 mysql -e 'show databases' -uroot -p123456 mysqlshow -uroot -p123456 # 不常用,记住上面那个就行了 3.创建数据库语法 create database 数据库名; 例如: create database `HA-test`; 4. 切换数据库 use HA-te…
摘要: 外键 一对多 外键 多对多 外键 一对一 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 一.引言: 我们在同一数据库创建的表时候,很多时候会出现相同数据的冗余问题,也就是说几个id…
给商品表(从表)添加一个外键 ALTER TABLE product ADD CONSTRAINT FK_cno FOREIGN KEY(cno) REFERENCES category(cid  从表); sql语句的执行顺序是:from-->WHERE-->GROUP BY -->HAVING --- >ORDER BY --> SELECT; sql语句的编写顺序是:select  ->  FROM  -> WHERE  -> GROUP BY -&g…
/* MySQL进阶13 常见六大约束: 1.not null 非空 2.default :默认值,用于保证该字段的默认值 ; 比如年龄:1900-10-10 3.primary key : 主键,用于保证该字段的值具有唯一性,并且非空 4.unique : 唯一约束,保证该字段的值可以为空,具有唯一性 5.check : 检查约束[mysql不支持,不报错,没有实际效果] 6.foreign key : 外键约束; 用于限制两个表的关系, 用于保证该字段的值必须来自于主表的关联列的值; 在从表…
主键(PRIMARY KEY) 主键在一个数据表中只能有唯一的一个,约束当前字段的值不能重复,且非空保证数据的完整性,也可以当做当前数据表的标识符用来查询(当做索引,唯一性索引的一种) 创建带主键的表 /*带主键*/ CREATE TABLE T( id int(11) not null primary key, name char(20) ); /*带复合主键*/ CREATE TABLE T( id int(11) not null , name char(20) not null, pri…
目录 part1:数据类型 part2:约束 part3:主键索引 PRI &唯一索引 UNI &普通索引 MUL part4:外键:foreign key part5:在外键中设置联级删除和联级更新 part6:表和表之间的关系 part7:存储引擎 part8:关于约束的添加和删除 part1:数据类型 date YYYY-MM-DD 年月日 (结婚纪念日,节假日) time HH:MM:SS 时分秒 (体育竞赛) year YYYY 年份值 (历史,酒的年份) datetime YY…
1首先删除所有的外检约束 --删除所有外键约束 DECLARE c1 cursor forselect 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; 'from sysobjectswhere xtype = 'F'open c1declare @c1 varchar(8000)fetch next from c1 into @c1while(@@fetch_status=0)beginexec…
总得来说是因为两个表的字段类型不一致,例如: 两个字段的类型或大小不严格匹配,一个为tinyint,另一个为char:或一个为int(10)另一个为int(9)也是不行的,即使都为int(10),但一个是有符号数,一个是无符号数也会报错. reference的另一个表的字段必须是主键或建立索引. 外键的名字有重复或与键值重复. 两个表必须都是用InnoDB引擎,事实上MyISAM引擎是不会产生外键的. 设置了ON DELETE SET NULL,但字段又设置为NOT NULL. 在这个关系里面,…
禁用外键约束    SET FOREIGN_KEY_CHECKS=0; ......数据迁移........ 启动外键约束    SET FOREIGN_KEY_CHECKS=1;…
0.唯一索引 unique对num进行唯一限制,表示num是独一无二的,uql是唯一索引名称 上面为联合索引:num和xx不能完全一样  1.外键的变种 a. 用户表和部门表 用户: 1 alex 1 2 root 1 3 egon 2 4 laoyao 3 部门: 1 服务 2 保安 3 公关 ===> 一对多 b. 用户表和博客表 用户表: 1 alex 2 root 3 egon 4 laoyao 博客表: FK() + 唯一 1 /yuanchenqi/     4 2 /alex371…
视图   视图本质就是对查询的封装   创建视图(定义视图 起名以v_开头) create view v_students as select classes.name as c_name ,students.* from students inner join classes on students.cls_id=classes.id;   查看视图                select * from v_students;   删除视图 drop view v_students;  …
一.外键foreign key    外键约束: 1.必须先创建被关联表才能创建关联表 2.插入记录时,必须先插入被关联表的记录,才能插入关联表(要用到被关联表)的记录 3.若不设置同步更新和同步删除,更新和删除都会受到限制 #表类型必须是innodb存储引擎,且被关联的字段,即references指定的另外一个表的字段,必须保证唯一 create table department( id int primary key, name varchar(20) not null )engine=in…
外键 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam.如果使用的是InnoDB引擎,是支持外键约束的.外键的存在使得ORM框架在处理表关系的时候异常的强大.因此这里我们首先来介绍下外键在Django中的使用. 类定义为class ForeignKey(to,on_delete,**options).第一个参数是引用的是哪个模型,第二个参数是在使用外键引用的模型数据被删除了,这个字段该如何处理,比如有CASCADE.SET_NULL等.这里以一个实际案例来说明.比如有一个…
目录 前言 不合理的表结构(案例) 带来的问题 如何解决问题? 如何确定表关系? 表关系 一对多 多对多 一对一 应用场景 判断表关系最简单的语法 三种关系常见案例 如何建立表关系? 外键 foreign key 确定外键字段归属方 修改表 修改表名 增加字段 删除字段 修改字段 复制表 复制表结构+记录 利用条件实现仅复制表结构 今日数据库操作语句 创建数据库 拆分员工与部门信息成两张表 创建表(员工与部门信息表) 前言 不合理的表结构(案例) 先来看下面这张表 emp_info 员工信息表…
二种方法(下例中表名为T_Work) 1.SQL查询系统表 SELECT 主键列ID=b.rkey ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid) ,外键表ID=b.fkeyid ,外键表名称=object_name(b.fkeyid) ,外键列ID=b.fkey ,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid)…
 --从左到右分别是: 外键约束名,子表名,外键列名,父表名 --use demodtcms--外键信息select fk.name fkname , ftable.name ftablename, cn.name fkcol, rtable.name ftablename,ObjectProperty(fk.id,'CnstIsUpdateCascade') updatCase,ObjectProperty(fk.id,'CnstIsDeleteCascade') deletCase from…
前言 相比于 Django 的 ORM ,SQLAlchemy "不依靠外键进行跨表联查" 的解决方案就比较多. 没啥好说的,只能怪自己学艺不精..  _(:з」∠)_ 解决办法 query = database.session().query(models.A, models.B) query = query.join(models.B, models.B.UUID == models.A.UUID).filter(models.a.UUID == ').filter(models.…
外键删除操作 如果一个模型使用了外键.那么在对方那个模型被删掉后,该进行什么样的操作.可以通过on_delete来指定.可以指定的类型如下: CASCADE:级联操作.如果外键对应的那条数据被删除了,那么这条数据也会被删除. PROTECT:受保护.即只要这条数据引用了外键的那条数据,那么就不能删除外键的那条数据. SET_NULL:设置为空.如果外键的那条数据被删除了,那么在本条数据上就将这个字段设置为空.如果设置这个选项,前提是要指定这个字段可以为空. SET_DEFAULT:设置默认值.如…
准备把以前的非集群版MySQL数据导入到MySQL Cluster中,出现 'No more attribute metadata records (increase MaxNoOfAttributes)' from NDBCLUSTER 的错误,如下图所示:(注:数据表引擎已改为 ENGINE=ndbcluster) [解决方案] 修改 MGM节点配置,把 [ndbd]中的 “MaxNoOfAttributes=1000”改成 “MaxNoOfAttributes=5000000”: vim…