草庐IT

mysql - 不允许添加外键

我正在使用mysql我想添加外键,但出现错误ErrorCode:1215.Cannotaddforeignkeyconstraint我正在使用的查询是ALTERTABLEpersonADDCONSTRAINTperson_company_FKFOREIGNKEY(company_id)REFERENCEScompany(conpany_id);公司的建表语句是CREATETABLE`company`(`Company_id`int(11)NOTNULLAUTO_INCREMENT,`Company_name`varchar(100)CHARACTERSETutf8DEFAULTNULL

MySql忽略外键错误

我有一个包含大量数据的表。该表中的PK在其他7个表中被引用(每个表也包含大量数据)。现在,由于主表和其他7个表之间从来没有任何FK,我必须找到一种方法从主表中删除所有其他7个表中的任何其他行未引用的行。这就是我的想法(所有解决方案都应使用存储过程实现):0)“从id不在(select..table1)且不在(select..table2)...table7的主表中删除”是不可能的,它需要很长时间才能完成。1)创建一个存储过程,该过程将在所有7个表中生成不同的、逗号分隔的已用ID集,并从主表中删除任何集合中不存在的那些ID。2)在这7个表中的每一个中创建一个“限制”FK并执行“从main

mysql - 创建对同一个表的两个外键引用,其中一个具有唯一的复合索引

items表中的所有项目都有一个可以从item_category表派生的类别。+---------------------------------------------+|items|+---------------------------------------------+|id|PK|+--------------------+------------------------+|item_category_id|FK(item_categories.id)|+--------------------+------------------------+item_category表

mysql - 如何使用外键更改 InnoDB 表中的字符集?

我有一组具有外键的InnoDB表,我想将这些表的默认字符集从latin1_swedish_ci更改为utf8_general_ci,我尝试运行以下查询:ALTERTABLEtest.PAYMENTDROPFOREIGNKEYPAYMENT_ibfk_1;但它给了我这个错误:ERROR1025(HY000):Erroronrenameof'./test/#sql-1fa_24f43'to'./test/PAYMENT'(errno:150)我已经尝试通过setforeign_key_checks=0执行此更改;甚至通过禁用键,但仍然会出现相同的错误。 最佳答案

mysql - 由于外键导致建表出错

我的数据库中已经有table1。表1:CREATETABLE`product`(`id`int(11)NOTNULLAUTO_INCREMENT,`typename`varchar(255)DEFAULTNULL,`typecode`varchar(55)DEFAULTNULL,`parent1`int(11)DEFAULTNULL,`parent2`int(11)DEFAULTNULL,PRIMARYKEY(`id`),KEY`parent1`(`parent1`),KEY`parent2`(`parent2`))ENGINE=InnoDBAUTO_INCREMENT=396DEFA

java - jpa/hibernate 如何通过带注释的外键映射元素集合

给定这两个表:CREATETABLE`soc`(`id`INTNOTNULLAUTO_INCREMENT,`name`VARCHAR(32),PRIMARYKEY(`id`));CREATETABLE`soc_attitude`(`soc_id`INTNOTNULL,`target_soc_id`INTNOTNULL,`attitude`INT,PRIMARYKEY(`soc_id`,`target_soc_id`));在Soc类中,我想使用如下字段从soc_attitude表中获取与this.soc_id匹配的所有行:privateMapattitudes;其中map的key是tar

java - 如果外键引用空行而键不可为空,如何不崩溃?

我有这张表“区域”:编号|姓名|parent_id1|随便|100000其中parent_id应该是对id的自引用,这意味着该行在地理上属于100000。但是由于一开始导入的数据是脏的,所以id为100000的行不存在。因此在给定的实体中:@Entity("regions")publicclassRegion{privateintid;privateStringname;privateRegionparent;...@ManyToOne()@JoinColumn(name="parent_id")publicRegiongetParent(){returnparent;}publicv

php - Doctrine 2 Symfony 2 在没有映射的情况下获取外键实体

所以我对Symfony和Doctrine还很陌生。我想知道是否有一种方法可以询问doctrine有哪些外键,而不必在模型中映射关系。例如,假设您有CoreBundle:Company,它总是会出现,然后您有OptionalBundle:Client,它将使用扩展Company@OneToOne映射关系,自己多加几个字段。问题是,由于OptionalBundle可能不存在,我不希望从CoreBundle到OptionalBundle的显式映射。现在假设一个用户出现并试图删除Company(5)。如果实体被完全映射,它会通过级联删除两者,但由于bundle不会意识到映射关系,它最终只会删除

mysql - 删除时无法使用 "set default"添加外键

我正在使用MariaDB,现在想将外键添加到我的数据库表中。我在尝试使用setdefault作为我的删除约束时遇到问题;=。(pages表中的user_id默认为1)`altertable`pages`addconstraintpages_user_id_foreignforeignkey(`user_id`)references`users`(`id`)ondeletesetdefault`但是,当我这样做时,我遇到了错误SQLSTATE[HY000]:一般错误:1005无法创建表“project.#sql-add_38”(errno:150)当我查看最后一个外键错误时,我得到以下输

mysql - 将查询结果中的 id 外键替换为用户名

我有这个有效的查询:SELECTid,SUM(points)ASpointsFROMleaderboardWHEREroundtimeBETWEENLOCALTIMESTAMP-INTERVAL'24hours'ANDLOCALTIMESTAMPGROUPBYidORDERBYpointsDESCLIMIT25它可能返回这样的东西:idpoints------------15430172781692但是,我不想在结果中包含id,而是想将其替换为与id对应的用户名(来自users表)用户表:idusername-------------15Frank16Joe17Andy这样第一个查询的