mysql - 接收字符串文字并将其存储在数据库的整数列中

标签 mysql database sendgrid

Sendgrid表示Categories是String数据类型的形式,如下:

[
  {
    "email": "john.doe@sendgrid.com",
    "timestamp": 1337966815,
    "category": [
      "newuser",
      "transactional"
    ],
    "event": "open"
  },
  {
    "email": "jane.doe@sendgrid.com",
    "timestamp": 1337966815,
    "category": "olduser"
    "event": "open"
  }
]

因此,如果有人发送一个数字,例如类别的 11111,sendgrid 会将其视为字符串并将其发回。

我总是使用数值来发送,当我返回相同的值时,我将其存储在数据库中的整数列中。例如我将存储 我的列 category_int 中的 11111 值,其数据类型为 int(11)

因为,我总是将其存储在整数列中,所以每当有人以实际字符串的形式发送类别时,就像上面的 olduser 一样,我就会收到错误。

我的问题:

我是否看到错误,因为我的 category_int 列旨在接收整数值而不是字符串值?但如果这是真的,那么 sendgrid 发送的值不是,在数字的情况下(在我的例子中是 11111) 被视为字符串,也许在这种情况下我也应该得到错误。仅当我以一些描述性词语(如 olduser 等)的形式发送类别时,才会出现错误。

请指教。

最佳答案

问题是 int(11) 列不能包含字符串。 MySQL 能够理解“11111”作为字符串可以更改为 int 11111 并知道如何转换它。但它不知道如何将 olduser 转换为 int,因此会抛出错误。

您可以将数据类型更改为 varchar,然后该列就能够处理 11111olduser

您还可以在将代码中的值传递到数据库之前检查它,并丢弃无法转换为整数的值。

关于mysql - 接收字符串文字并将其存储在数据库的整数列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23434591/

相关文章:

mySQL 查询将团队 ID 更改为团队名称并将 not null 设为空白

Mysql根据等级DESC和经验DESC计算排名

php - mysql 中的错误在 php 中获取错误

即使已连接,PHP 也无法选择数据库

php - 使用 SQL 查询填充 D3.js 饼图

ruby-on-rails - 换行符在 Sendgrid X-SMTPAPI header 中解析为 =0A

ruby-on-rails - Heroku - 不允许安装 sendgrid 插件

ruby-on-rails - Heroku 和 sendgrid - 现在如何将它们连接在一起?

java - 使用无效的子句组

java - JPA使用auto_increment主键覆盖记录