环境:ubuntu 16.04/MySQL 5.7.16/laravel5.4
今天使用laravel 进行数据库插入的时候,出现下列信息报错:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'staff_info.depart_id' in 'where clause' (SQL: insert into `staff_infos` (`id`, `depart_id`, `duty_id`, `staff_name`, `phone`, `education`, `sex`, `idcode`, `email`, `major`, `address`, `native_place`, `birth_time`, `nation`, `poli_status`, `graduated_time`, `enter_department`, `educated_school`, `updated_at`, `created_at`) values (*********, 001, 001, liuxiaohua,********, bachelor, female,***********, *********@qq.com, jisuanji, anlida, guangdong)
我找了很长时间,也看了很多博客,发现我遇到的Column not found: 1054 Unknown column '******' in 'where clause'错误大多都是定义或使用的时候没有出现该字段造成的.
一般来说,我目前遇到过的有这么几种情况:
1.使用表的表名或字段名称与定义时不一致
2.定义触发器时的引用名称没有与先前定义的表或字段名对应起来
3.由于我使用了laravel框架进行开发,特别值得注意的是,在定义model的可填写字段中,可填写字段是以将字段名用引号括起来变成字符串传参的,一不小心就会将$fillable='id'写成$fillable=' id',多了一个空格就会引起使用字段与定义字段不匹配的问题.
而我刚刚上面的错误信息是因为我将表名改动后,忘记改动触发器的定义了,所以改写定义触发器语句就得到解决了.
以上只是我个人进行开发时所遇到的问题,欢迎纠正补充.