Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL\u触发器\u问题\u未知\u列_Mysql_Sql_Testing_Architecture - Fatal编程技术网

MySQL\u触发器\u问题\u未知\u列

MySQL\u触发器\u问题\u未知\u列,mysql,sql,testing,architecture,Mysql,Sql,Testing,Architecture,我对在MySQL中制作触发器很陌生,所以啊。以下是我的问题代码行: DELIMITER | CREATE TRIGGER trigME BEFORE INSERT ON user_accounts FOR EACH ROW BEGIN INSERT INTO user_logs(user_id,date_entry) values (NEW.user_id,now()); END | 它返回一个错误,说明: 错误1054(42S22)“新建”中的未知列“用户id” 我花了大约几个小时搜索解决方

我对在MySQL中制作触发器很陌生,所以啊。以下是我的问题代码行:

DELIMITER |
CREATE TRIGGER trigME BEFORE INSERT ON user_accounts
FOR EACH ROW
BEGIN
INSERT INTO user_logs(user_id,date_entry) values (NEW.user_id,now());
END |
它返回一个错误,说明:

错误1054(42S22)“新建”中的未知列“用户id”


我花了大约几个小时搜索解决方案来帮助解决这些问题,请帮帮我:)

我已经在我自己的MySQL 5.5.15数据库和5.1.61、5.5.30和5.6.6版本at上尝试了你的语法,并且在所有这些版本上都很好地工作。点击查看

因此,首先,仔细检查您是否有正确的列名

如果您这样做了,那么它可能与您的MySQL版本有关。在文档中,有一些示例,它们使用类似于如下的
UPDATE
的异常语法将
新的
值插入另一个表中

CREATE TRIGGER trigME BEFORE INSERT ON user_accounts
  FOR EACH ROW
  BEGIN
    INSERT INTO user_logs SET user_id = NEW.user_id, date_entry = NOW();
  END;
或者你也可以试着读入一个变量
new\u user\u id
,并在
INSERT
中使用它来代替

CREATE TRIGGER trigME BEFORE INSERT ON user_accounts
  FOR EACH ROW
  BEGIN
    DECLARE new_user_id INT;
    SET new_user_id = NEW.user_id;
    INSERT INTO user_logs(user_id, date_entry) values (new_user_id, NOW());
  END;

未来读者注意:请参阅下面关于超级权限的评论…

显示
用户帐户的创建表语句
TABLE所有我的列名都是正确的DAV。我读过MySQL文档,它说我需要超级权限来制作触发器。因此,我在控制台中所做的是将超级权限分配给root用户。尽管我认为root在所有方面都可以访问和创建所有函数和必要的过程,否则我可能错了?或者我的MySQL服务器出了问题。无论如何,这解决了我的问题。。谢谢你的帮助!酷,没问题。我在另一个数据库上尝试时也遇到了这个问题,但它直接告诉我需要“超级”权限。