例如,我有一张 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 错误,因为我已经插入了 mgrdeptno 的字符串值,这只能通过查看值来找到,但是 PostgreSQL 没有给我它遇到此类问题的确切列名。有什么方法可以在错误消息本身中获取列名。因为当我们有超过 50 到 60 列时,很难找到有问题的列。

最佳答案

您不必找出哪一列是错误的,因为在插入数据库之前,您应该确保输入的格式正确。

您正在使用 Laravel,因此您应该利用它提供的强大工具集进行验证:https://laravel.com/docs/5.8/validation

例如,在您的情况下,您应该在 Controller 的开头使用以下规则来验证 mgr:

$request->validate([
    'mgr' => 'number'
]);

如果不遵守规则,这将引发异常,因此当用户尝试输入数据时将失败,而不是当您的后端尝试将数据插入数据库时​​。

10-06 03:56