相关疑难解决方法(0)

MySQL foreign_key_checks会影响整个数据库吗?

当我在MySQL中执行此命令时:

SET FOREIGN_KEY_CHECKS=0;
Run Code Online (Sandbox Code Playgroud)

它会影响整个引擎还是只是我当前的交易?

mysql

194
推荐指数
4
解决办法
20万
查看次数

如何删除MySQL表上的重复项?

我需要DELETEMySQL表上为指定的sid复制行.

如何使用SQL查询执行此操作?

DELETE (DUPLICATED TITLES) FROM table WHERE SID = "1"
Run Code Online (Sandbox Code Playgroud)

像这样的东西,但我不知道该怎么做.

mysql duplicates

154
推荐指数
12
解决办法
20万
查看次数

'SET foreign_key_checks = 1'不再起作用

我正在与:

  • mysql:稳定5.6.22(瓶装)
  • MySQLWorkBench 6.2

我有以下顺序

DROP TABLE IF EXISTS invoicedetail;
DROP TABLE IF EXISTS invoiceheader;
DROP TABLE IF EXISTS product;
Run Code Online (Sandbox Code Playgroud)

它通过Java(JDBC)失败并通过MySQLWorkBench失败,错误消息是关于FK Child约束(我没有确切的错误消息),通过谷歌我做了一个研究,我发现了两次相同的有效解

好吧,我做了以下事情:

SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS invoicedetail;
DROP TABLE IF EXISTS invoiceheader;
DROP TABLE IF EXISTS product;
SET FOREIGN_KEY_CHECKS=1;
Run Code Online (Sandbox Code Playgroud)

它再次起作用,只是玩,我试图再次执行

DROP TABLE IF EXISTS invoicedetail;
DROP TABLE IF EXISTS invoiceheader;
DROP TABLE IF EXISTS product;
Run Code Online (Sandbox Code Playgroud)

确保SELECT @@FOREIGN_KEY_CHECKS;返回1

那么原始的错误消息不会再出现.

我再次对谷歌进行了研究,发现了以下内容:

它说: It is session-based

好吧,即使在:

  • mysql服务器停止并重新启动
  • 工作台重新开放
  • 电脑重新启动 …

mysql mysql-workbench

9
推荐指数
1
解决办法
3491
查看次数

删除索引是不可能的

以下create语句显示了我的一个MariaDB表的当前结构.

CREATE TABLE `councilor` (
    `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
    `user` BIGINT(20) NOT NULL,
    `council` INT(11) NOT NULL,
    `role` CHAR(50) NOT NULL DEFAULT 'member' COLLATE 'utf8_persian_ci',
    `cDate` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    `uDate` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
    `startDate` DATETIME NULL DEFAULT NULL,
    `endDate` DATETIME NULL DEFAULT NULL,
    `responsibility` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_persian_ci',
    `details` TEXT NULL COLLATE 'utf8_persian_ci',
    PRIMARY KEY (`id`),
    UNIQUE INDEX `userId_councilId` (`user`, `council`),
    INDEX `council_user_council_foreign` (`council`)
)
COLLATE='utf8_persian_ci'
ENGINE=InnoDB
ROW_FORMAT=COMPACT
AUTO_INCREMENT=11;
Run Code Online (Sandbox Code Playgroud)

我需要删除唯一索引,但尝试删除两个键中的任何一个失败.

ALTER TABLE …
Run Code Online (Sandbox Code Playgroud)

mysql foreign-keys

8
推荐指数
3
解决办法
5656
查看次数

更改表查询添加约束花费的时间太长

office我想更改一个名为 person 的表,并想使用table添加外键

我正在使用的查询是

ALTER TABLE person
ADD CONSTRAINT person_Office_FK
FOREIGN KEY ( Office_id )
REFERENCES Office ( Office_id ) ;
Run Code Online (Sandbox Code Playgroud)

office大约有 500,000 行,表person大约有 500 万行

这个查询花费了很长时间,我不确定发生了什么。

mysql sql

6
推荐指数
2
解决办法
1万
查看次数

如果两个表的外键相互引用,如何删除记录?

删除它们的任何记录都会报告如下错误:

错误1451(23000):无法删除或更新父行:外键约束失败

如何克服这个问题?

sql constraints foreign-keys

4
推荐指数
1
解决办法
2445
查看次数

SQL删除的行返回-“ ORA-02292:违反完整性约束(..)-找到子记录”

我有一个包含四个表的数据库。图中的关系架构如下:

在此处输入图片说明

以下是这些行:

在此处输入图片说明

现在,我正在尝试删除具有所有者ID的所有者OW1。由于id是所有者表中的主键,而其他表中的外键则不允许我删除该行。这是我尝试的SQL:

 delete from owners
 where ownerid = 'OW1' and petid = 'PT1'
Run Code Online (Sandbox Code Playgroud)

它返回:

ORA-02292: integrity constraint (TEST_1.ADDRESSES_OWNERS_FK) violated - child record found

而且我不允许在关系图中将删除规则设置为“ CASCADE”。请帮忙 :(

sql database oracle11g

4
推荐指数
2
解决办法
4万
查看次数

由于外键,无法更改表以删除 auto_increment

我正在尝试从MySQL数据库中的_id 中删除Auto_Increment。但是,这是表的内容,当我使用此命令时columncolumnprimary key

ALTER TABLE Profile
MODIFY _id INT PRIMARY KEY NOT NULL
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,告诉我我不能这样做,因为还有其他表引用了primary key.

因此,我的问题是:有没有办法解决这个问题?

mysql

4
推荐指数
1
解决办法
3309
查看次数

如何通过控制台禁用数据库导入的外键检查?

我知道我可以像这样导入数据库转储:

mysql -u {{username}} -p {{target_database}} < myDump.sql
Run Code Online (Sandbox Code Playgroud)

例如

mysql -u root -p theDatabase < myDump.sql
Run Code Online (Sandbox Code Playgroud)

但是如何在关闭外键检查的情况下导入数据库?

我在 mysql 帮助中搜索了有用的参数,但没有找到:

mysql --help | findstr "foreign"
Run Code Online (Sandbox Code Playgroud)

什么都不返回

mysql database wamp

3
推荐指数
1
解决办法
3550
查看次数

当表中已经有一些数据时,有没有办法添加外键?

我有这两个表,并且已经有一些数据。

CREATE TABLE `system_user_data` (
`id_user` bigint(20) NOT NULL AUTO_INCREMENT,
`user_login` varchar(15) DEFAULT NULL,
 PRIMARY KEY (`id_user`)
) ENGINE=InnoDB AUTO_INCREMENT=120 DEFAULT CHARSET=utf8;

CREATE TABLE `system_user_tokens` (
`id_token` bigint(20) NOT NULL AUTO_INCREMENT,
`token_user` bigint(20) DEFAULT NULL,
`token_token` varchar(20) DEFAULT NULL,
`token_createdate` date DEFAULT NULL,
   PRIMARY KEY (`id_token`)
 ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

当我尝试添加外键token_user = id_user时,出现错误。没有任何数据时,它正在工作。

alter table system_user_tokens add foreign key (token_user) references system_user_data (id_user);

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`name`.`#sql-1b44_727`, …
Run Code Online (Sandbox Code Playgroud)

mysql sql

2
推荐指数
1
解决办法
1584
查看次数