You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入PostgreSQL数据库时遇报错:bigint类型输入语法无效

解决HeidiSQL恢复PostgreSQL时的"invalid input syntax for type bigint"错误

问题根源

你的建表语句里,id字段的默认值写法存在错误:把nextval('access_log_id_seq'::regclass)用单引号括起来了。PostgreSQL会将带引号的内容识别为字符串常量,但id是BIGINT类型,插入数据时系统尝试把字符串转换为bigint,就会触发类型转换错误。

解决方案

  1. 修正建表语句
    将id字段的默认值去掉单引号,改成PostgreSQL支持的函数调用写法:

    CREATE TABLE IF NOT EXISTS "access_log" (
        "id" BIGINT NOT NULL DEFAULT nextval('access_log_id_seq'::regclass),
        "user_id" BIGINT NOT NULL,
        "platform" SMALLINT NOT NULL,
        "created_at" TIMESTAMP NULL DEFAULT NULL,
        "updated_at" TIMESTAMP NULL DEFAULT NULL,
        "device_id" VARCHAR(255) NULL DEFAULT NULL,
        "location" VARCHAR(255) NULL DEFAULT NULL,
        "ip" VARCHAR(255) NULL DEFAULT NULL,
        PRIMARY KEY ("id"),
        CONSTRAINT "access_log_user_id_foreign" FOREIGN KEY ("user_id") REFERENCES "public"."users" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION
    );
    
  2. 检查备份数据
    若修正建表语句后仍报错,打开备份文件检查以下字段的取值:

    • id:确保是合法数字,或留空让序列自动生成
    • user_id:必须是数字,且匹配users表中id的类型,不能为NULL
    • platform:必须是合法小整数,不能为NULL或字符串
  3. 优化备份方式
    HeidiSQL对PostgreSQL的语法兼容偶尔会出问题,建议使用PostgreSQL原生的pg_dump工具导出备份,避免语法解析类错误。

补充说明

PostgreSQL中,字段默认值如果是函数调用(比如序列生成函数nextval),直接写函数即可,不需要加单引号。加单引号会将函数调用解析成普通字符串,导致类型不匹配。

内容的提问来源于stack exchange,提问作者Kapil Dev Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:20:30