未知栏' dob'在'字段列表'

时间:2015-05-28 12:50:37

标签: mysql

我收到错误未知列' dob'在'字段列表'

我知道dob在我的表中并且多次调用它并且在我的代码中插入命令正确。我只是在学习MySQL,所以我完全失去了

    insert into users (userid, firstname, username,dob) 
    values ('gg', 'greg', 'greg2', '1980-01-01');

这是我试图将其插入的表格。

    CREATE TABLE `users` (
      `userid` varchar(50) NOT NULL DEFAULT '',
      `firstname` varchar(100) DEFAULT NULL,
      `lastname` varchar(100) DEFAULT NULL,
      `middleName` varchar(100) DEFAULT NULL,
      `username` varchar(20) DEFAULT NULL,
      `password` varchar(20) DEFAULT NULL,
      `dob` date DEFAULT NULL,
      `gender` char(1) DEFAULT NULL,
      `occupationId` int(11) DEFAULT NULL,
      `userStatusId` int(11) DEFAULT NULL,
      `userTypeId` int(11) DEFAULT NULL,
      `created` datetime DEFAULT NULL,
      `age` int(11) DEFAULT NULL,
      PRIMARY KEY (`userid`),
      UNIQUE KEY `username` (`username`),
      KEY `userStatusId` (`userStatusId`),
      KEY `userTypeId` (`userTypeId`),
      KEY `occupationId` (`occupationId`),
      KEY `lastname` (`lastname`),
      CONSTRAINT `users_ibfk_1` FOREIGN KEY (`userStatusId`) REFERENCES `userStatus` (`userStatusId`),
      CONSTRAINT `users_ibfk_2` FOREIGN KEY (`userTypeId`) REFERENCES `userType` (`userTypeId`),
      CONSTRAINT `users_ibfk_3` FOREIGN KEY (`occupationId`) REFERENCES `occupation` (`occupationId`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我正在Sequel Pro中完成所有工作

    insert into users (userid, firstname, username, dob) 
    values ('gg', 'greg', 'greg2', '1980-01-01');

我试过这个也是,并得到相同的错误,然后我尝试了这样

   insert into users (userid,firstname,username,dob) 
   values ('gg','greg','greg2','1980-01-01');

这是我在插入之前运行的代码

    delimiter $$

    create trigger usersInsert
    before insert on users
    for each row begin
    set new.created = now();
    set new.age = floor(datediff(now(),dob)/365);
    end $$

    delimiter ; 

我试图查看我的触发器是否正常工作,因此我将新用户插入到用户表中以确保其正常工作

1 个答案:

答案 0 :(得分:1)

我发现了我的错误。它在我的触发器中

    delimiter $$

    create trigger usersInsert
    before insert on users
    for each row begin
    set new.created = now();
    set new.age = floor(datediff(now(),new.dob)/365);
    end $$

    delimiter ; 

在将值设置为dob时,我没有使用'new.dob'

感谢您的帮助!