例如,我有一张 table ...
create table emp(
empno integer,
ename character varying(255),
job character varying(255),
mgr integer,
hiredate timestamp without time zone,
sal double pricision,
comm integer,
deptno integer
)
当我尝试插入数据时...
insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values (1,'abc','abc','e','2018-10-12 00:00:00',50.50,1,'f');
然后它给了我一个
invalid text representation 7 error invalid input syntax for integer
错误,因为我已经插入了 mgr
和 deptno
的字符串值,这只能通过查看值来找到,但是 PostgreSQL 没有给我它遇到此类问题的确切列名。有什么方法可以在错误消息本身中获取列名。因为当我们有超过 50 到 60 列时,很难找到有问题的列。 最佳答案
您不必找出哪一列是错误的,因为在插入数据库之前,您应该确保输入的格式正确。
您正在使用 Laravel,因此您应该利用它提供的强大工具集进行验证:https://laravel.com/docs/5.8/validation
例如,在您的情况下,您应该在 Controller 的开头使用以下规则来验证 mgr
:
$request->validate([
'mgr' => 'number'
]);
如果不遵守规则,这将引发异常,因此当用户尝试输入数据时将失败,而不是当您的后端尝试将数据插入数据库时。