每次都从特定表中删除记录,每次剩下的记录数量都完全相同(54条)。
每次都从特定表中删除记录,每次剩下的记录数量都完全相同(54条)。
好的,我刚刚继承了一个之前开发人员的项目,在我加入之前,他们遇到了一个问题,就是一个特定的表会丢失记录,每次丢失的记录数都完全相同,记录将被完全删除。我还注意到代码中有很多DELETE语句,但是我找不到删除记录的脚本。
目前我每天运行两次CRON作业来备份数据库。
我使用以下SQL检查CASCADE DELETE:
USE information_schema;
SELECT
table_name
FROM
referential_constraints
WHERE
constraint_schema = 'my_database_name'
AND referenced_table_name IN
(SELECT table_name
FROM information_schema.tables
WHERE table_schema ='my_database_name')
AND delete_rule = 'CASCADE'
它列出了我的数据库中的所有表,并检查是否存在CASCADE DELETE的可能性,但是到目前为止返回为空。
我经常使用SQL,因为我是一名后端开发人员,但我不是专家。所以我真的需要一些帮助,因为每次发生这种情况都很尴尬。这是一个MySQL数据库。谢谢。
最近我遇到了一个类似的情况。我创建了一个SQL
触发器语句,在删除记录之前将这些行存储到另一个表中,这样做的好处是:
- 每次发生这种情况时,我能够恢复丢失的数据。
- 我能够研究被删除的行,并且这些信息有助于解决问题。
下面是一个备份被删除记录的示例:
CREATE TABLE `history_table` LIKE `table`; ALTER TABLE `history_table` MODIFY COLUMN `id` INT UNSIGNED NOT NULL; ALTER TABLE `history_table` DROP PRIMARY KEY; DELIMITER $$ CREATE TRIGGER `deleted_table` BEFORE DELETE on `table` FOR EACH ROW BEGIN INSERT INTO history_table SELECT * FROM table WHERE id = OLD.id; END$$ DELIMITER ;
恢复表的方法如下:
INSERT INTO table SELECT * FROM history_table