0

嗨,我正在将我的所有表从一个数据库导入到另一个数据库,但不知何故没有导入触发器。使用 MySQL 5.6。所以我试图从以前的数据库中复制触发器语句以在当前数据库中创建触发器。分隔符 $$

USE `swcms`$$

CREATE 
DEFINER=`swcms`@`localhost` 
TRIGGER `swcms`.`class_lesson_trigger` 
AFTER DELETE ON `swcms`.`swlp4_class` 
FOR EACH ROW 
delete from swlp4_lesson where className in 
(SELECT CONCAT(old.classLv,old.className) AS className FROM swlp4_class);
$$

我在工作台的输出部分遇到的错误

错误代码:1175。您正在使用安全更新模式,并且您尝试更新没有使用 KEY 列的 WHERE 的表 要禁用安全模式,请切换 Preferences -> SQL Editor -> Query Editor 中的选项并重新连接。

我在应用脚本窗口中遇到的错误

SQL Statement:
DROP TRIGGER IF EXISTS swcms.class_lesson_trigger
ERROR: Error when running failback script. Details follow.
ERROR 1050: Table 'swlp4_class' already exists
SQL Statement:
CREATE TABLE `swlp4_class` (
  `classID` int(11) NOT NULL auto_increment,
  `schoolID` int(11) NOT NULL,
  `educationLv` int(11) NOT NULL default '0',
  `classLv` int(11) NOT NULL,
  `className` varchar(10) NOT NULL,
  PRIMARY KEY  (`classID`),
  UNIQUE KEY `classID_UNIQUE` (`classID`),
  KEY `school_class_fk_idx` (`schoolID`),
  CONSTRAINT `school_class_fk` FOREIGN KEY (`schoolID`) REFERENCES `swlp4_school` (`schoolID`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8

第二个错误对我没有任何意义。我没有删除触发器或表仍然收到此错误。

知道我做错了什么

4

1 回答 1

0
  • 定义者条款的问题。它包含旧数据库用户的信息。
  • 建议:
    1. 如果对新数据库无效,则忽略定义者信息。或者您应该遵循相同的步骤,例如
    2. 创建触发器
    3. 导出 Sql
    4. 将 Sql 导入新数据库。
于 2012-10-25T06:24:05.737 回答