mysql启动和关闭外键约束的方法(FOREIGN_KEY_CHECKS)

在MySQL中删除一张表或一条数据的时候,出现

 

[Err] 1451 -Cannot delete or update a parent row: a foreign key constraint fails (...)
这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据。可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。

 

 

 

我们可以使用

 

    SET FOREIGN_KEY_CHECKS=0;
来禁用外键约束.
 
之后再用
    SET FOREIGN_KEY_CHECKS=1;
来启动外键约束.
 
查看当前FOREIGN_KEY_CHECKS的值可用如下命令

 

    SELECT  @@FOREIGN_KEY_CHECKS;

 

推荐阅读

如何写一份让 HR 眼前一亮的简历(附模板)

字节、美团、快手核心部门面试总结(真题解析)

面试阿里,HashMap 这一篇就够了

面试必问的 MySQL,你懂了吗?

面试必问的线程池,你懂了吗?

4 年 Java 经验,阿里网易拼多多面试总结、心得体会

跳槽,如何选择一家公司

如何准备好一场大厂面试

MySQL 8.0 MVCC 核心原理解析(核心源码)

921天,咸鱼到阿里的修仙之路

复习2个月拿下美团offer,我都做了些啥

 

 

另外,我还准备了很多大厂面试资料、0基础自学教程,由于不能放外链,所以有需要的小伙伴去公众号【程序员囧辉】回复【资料】自行获取好了。

 

程序员囧辉 CSDN认证博客专家 Spring MySQL JVM
当你的才华还撑不起你的野心的时候,你就应该静下心来学习,愿你在我这里能有所收获。公众号:程序员囧辉,分享个人在Java学习路上的一些学习、思考、经验和总结。
已标记关键词 清除标记
<div class="post-text" itemprop="text"> <p>My web application allow to get backups and set restore sql file.when restore script drop all the tables but some tables don't drop because there are foreign keys.so i added some code above of the restore.php file that will successfully execute in localhost but server it is not working.server not execute the <strong>SET FOREIGN_KEY_CHECKS = 0</strong>. </p> <p><strong>my local machine php version :5.38 Server machine php version :5.46</strong></p> <p>Thank you !!</p> <p>here is the restore.php file</p> <pre><code>$remove_foreign_key = 'SET FOREIGN_KEY_CHECKS = 0'; $result = mysqli_query( $conn,$remove_foreign_key ); if( $result ) { } else{ echo "Error "; } if (! empty($_FILES)) { // Validating SQL file type by extensions if (! in_array(strtolower(pathinfo($_FILES["backup_file"]["name"], PATHINFO_EXTENSION)), array( "sql" ))) { $response = array( "type" => "error", "message" => "Invalid File Type" ); } else { if (is_uploaded_file($_FILES["backup_file"]["tmp_name"])) { move_uploaded_file($_FILES["backup_file"]["tmp_name"], $_FILES["backup_file"]["name"]); $response = restoreMysqlDB($_FILES["backup_file"]["name"], $conn); } } } function restoreMysqlDB($filePath, $conn) { $sql = ''; $error = ''; if (file_exists($filePath)) { $lines = file($filePath); foreach ($lines as $line) { // Ignoring comments from the SQL script if (substr($line, 0, 2) == '--' || $line == '') { continue; } $sql .= $line; if (substr(trim($line), - 1, 1) == ';') { $result = mysqli_query($conn, $sql); if (! $result) { $error .= mysqli_error($conn) . " "; } $sql = ''; } } // end foreach if ($error) { $response = array( "type" => "error", "message" => $error ); } else { $response = array( "type" => "success", "message" => "Database Restore Completed Successfully." ); } unlink($filePath); } // end if file exists return $response; } ?> </code></pre> </div>
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页