关于 sql:RODBC 错误 – 无法为标识列插入显式值 | 珊瑚贝

RODBC Error – Cannot insert explicit value for identity column


我正在尝试使用 RODBC 包中的 sqlSave 方法将记录附加到现有 SQL 表。

1
2
3
4
df <- DATA.frame(EmployeeID = c(NA, NA, NA), EmployeeName=c(“Bob”,“Sue”,“Jane”))

sqlSave(myconn, dat=df, tablename =“Employees”, append = TRUE, rownames = FALSE, colnames = FALSE, verbose = TRUE, safer = TRUE,
        addPK = FALSE, typeInfo, varTypes, fast = TRUE, test = FALSE, nastring = NULL)

但是,我不断收到错误

[RODBC] 更新中执行失败
23000 544 [Microsoft][ODBC SQL Server Driver][SQL Server]当 IDENTITY_INSERT 设置为 OFF 时,无法在表 \\’Employees\\’ 中插入标识列的显式值。

我的表应该会自动创建 ID。什么给了?

  • 您是否尝试过从 data.frame 中删除 EmployeeID 列?使用此方法,您似乎正在尝试将 NULL 值附加到 EmployeeID 列中。最好不要为附加指定这些值。
  • @MrFlick 是的,在这种情况下,我收到错误”\\’dimnames\\’ [2] 的长度不等于数组范围”。这个帖子非常相似,但答案并没有真正帮助。


添加这个答案,因为我找到了解决问题的黑客式解决方法。

  • 打开 Identity_Insert
  • 1
    sqlQuery(myconn,“Set Identity_Insert Employees On”, errors = TRUE)

  • 执行 sqlSave 查询。这里的问题是您需要手动插入 ID,这意味着您负责验证它们的唯一性和顺序性。就我而言,我知道我的表在插入之前是空的,所以我可以将 rownames 和 addPK 设置为 TRUE。
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    sqlSave(
      myconn,
      dat=df,
      tablename =“Employees”,
      append = TRUE, rownames = TRUE,
      colnames = FALSE,
      verbose = TRUE,
      safer = TRUE,
      addPK = TRUE,
      fast = TRUE,
      test = FALSE,
      nastring = NULL
    )
  • 关闭 Identity_Insert
  • 1
    sqlQuery(myconn,“Set Identity_Insert Employees Off”, errors = TRUE)

    来源:https://www.codenong.com/29833437/

    微信公众号
    手机浏览(小程序)

    Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8814.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
    0
    分享到:
    没有账号? 忘记密码?