【问题标题】:Error message (Column count doesn't match value count at row 1) [duplicate]错误消息(列计数与第 1 行的值计数不匹配)[重复]
【发布时间】:2021-01-08 19:24:35
【问题描述】:

我目前正在尝试在数据库表中插入值,我创建的数据库显示如下:

recipeid - int (Primary key) NOT NULL
recipename - varchar(80)
reciperating - int
recipephoto - longtext

但是,当我尝试发出如下所示的 sql 语句时:

(insert into userRecipeInfo values('Fried rice',4,'https://i.guim.co.uk/img/media/03734ee186eba543fb3d0e35db2a90a14a5d79e3/0_173_5200_3120/master/5200.jpg?width=1200&height=900')

错误消息显示如下:

Column count doesn't match value count at row 1

我想知道是什么导致了这个错误。谢谢!

【问题讨论】:

    标签: sql sql-insert


    【解决方案1】:

    您的 INSERT 语句提供 3 个值,但您的表有 4 列。您需要限定目标列 - 即使您确实为所有列提供了值,也强烈建议您这样做。

    insert into userRecipeInfo 
      (recipename, reciperating, recipephoto ) 
    values
      ('Fried rice',4,'https://i.guim.co.uk/img/media/03734ee186eba543fb3d0e35db2a90a14a5d79e3/0_173_5200_3120/master/5200.jpg?width=1200&height=900')
    

    【讨论】:

    • 嗯,它声明“字段'recipeid'没有默认值”
    • @Jtang11:那么你需要提供一个值
    • 它声明“无法添加或更新子行:外键约束失败 (userinfo.userrecipeinfo, CONSTRAINT userrecipeinfo_ibfk_1 FOREIGN KEY (recipeid) REFERENCES accountinfo ( id))"
    【解决方案2】:

    因为您的表有 4 列,但您只传递了 3 个值。 使用插入语句,最好指定列名:

    insert into userRecipeInfo (recipename ,reciperating ,recipephoto ) 
    values('Fried rice',4,'https://i.guim.co.uk/img/media/03734ee186eba543fb3d0e35db2a90a14a5d79e3/0_173_5200_3120/master/5200.jpg?width=1200&height=900)
    

    并希望 recipeid 自动生成。

    指定列名的好处:

    • 如果您的架构在未来发生变化并且您添加了一个可为空的列,则该语句不会中断
    • 如果重新创建数据库并且列的顺序发生变化,如果您在语句中指定了匹配的列名,则没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多