【问题标题】:Sql arithmetic overflowsql算术溢出
【发布时间】:2015-10-15 22:30:28
【问题描述】:

我有这个问题:

Insert into Course(name,age,id,facebookuser)
Values('Example',25,204813,blalbla@walla.com),
('Exmnumtwo',35,504813,email@walla.com)

这给了我错误 8115:“将表达式转换为数据类型 int 的算术溢出错误”。

但是,当我删除“,”符号时,一切正常,没有任何错误。是什么导致了错误?

【问题讨论】:

  • Insert into Course(name,age,id,facebookuser) Values('Example',25,204813,'blalbla@walla.com'), ('Exmnumtwo',35,504813,'email@walla.com')
  • @lad2025 我没有看到我们的代码之间有任何差异。帮助?
  • 您需要在电子邮件地址中添加引号!
  • @Antonio 仔细看
  • @spirographer 我的错。我已经在电子邮件地址中有引号。这不是问题。

标签: sql math sql-insert


【解决方案1】:

您的Course 表的id 字段看起来可能设置为smallint,最大值为32,767。

id字段的数据类型设置为int,将最大值增加到2,147,483,647。

SQL Server 中的整数数据类型列表:https://msdn.microsoft.com/en-AU/library/ms187745.aspx

【讨论】:

  • 太棒了!很高兴这对你有用。 :) 如果解决了问题,请确保将答案标记为已接受。
【解决方案2】:

根据你发给我的 png http://up415.siz.co.il/up3/tm3jjmurzzmx.png

您需要确保您的 ID 适合数据大小。您的实际数据会溢出 32 位有符号整数,因此您需要将您的 id 类型设为 64 位(或 32 位无符号)或选择具有较小数字的 ID,如您上面的示例,由于您没有引用电子邮件地址而失败。

【讨论】:

  • 我不相信。我真是个白痴。这是错误。我怎样才能给 id 变量一个 64 位? (对不起床英语。)
  • 在定义架构时尝试使用 bigint 类型。完成后请选择我的答案作为正确答案:)
  • @spirographer 我为你的回答做了这件事。如果你能帮助我,我还有另一个问题,我会很高兴。当我使用 where "something" = string 我必须使用 where "something" like string 时,如果我使用 = 它会给我一个错误。使用 = 而不是 like 有什么问题?
  • @Antonio 您必须将此作为新问题发布(或者只需搜索答案,因为该问题有很多资源)。
  • @Nerdwood 今天我才在这里注册。我需要几天时间才能了解这里的一切是如何运作的。无论如何,如果你能帮助我,这里是代码 - siz.co.il/my.php?i=kdnvtzommwvh.png