gpt4 book ai didi

mysql - 为什么 MySql 将 INT 类型列视为 LONG?

转载 作者:行者123 更新时间:2023-11-29 18:51:49 25 4
gpt4 key购买 nike

(MySQL 版本 5.6.36)

我们的数据库中有许多表的列类型为 INT。我只是对货币表中生成的 DataTable 运行 linq 查询...并且隐式地将 id 字段转换为 int。

发生“指定的强制转换无效”异常。

因此,我决定在数据行上运行标准 foreach,获取 id 列的类型...果然它以 INT64 形式返回。

这让我进一步陷入了兔子洞...我打开了一个控制台,并启动了 mysql 命令行,并打开了选项 --column-type-in​​fo .. .并做了一个简单的查询。

mysql> select id from currency;
Field 1: `id`
Catalog: `def`
Database: `intranet`
Table: `currency`
Org_table: `currency`
Type: LONG
Collation: binary (63)
Length: 11
Max_length: 1
Decimals: 0
Flags: NOT_NULL PRI_KEY AUTO_INCREMENT NUM PART_KEY


+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
+----+
3 rows in set (0.00 sec)

这是描述:

+----------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| currency | varchar(3) | YES | | NULL | |
| per_usd | double | YES | | NULL | |
+----------+------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

和创建:

CREATE TABLE `currency` (  `id` int(11) NOT NULL AUTO_INCREMENT,
`currency` varchar(3) DEFAULT NULL,
`per_usd` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1

但这不仅限于这一张表...所有表都显示 INT,但返回 LONG。

在测试中,我已将 id 列更改为 MEDIUMINT,然后它返回 INT24,而不是 LONG。

只是想知道我是否缺少一些简单的东西?

最佳答案

只需删除该表并创建一个新表,并将其添加到 id 定义中

CREATE TABLE  currency (

id int(11) unsigned NOT NULL AUTU_INCREMENT,

// the other definitions

);

希望你明白这一点。抱歉,我正在用手机写信。

关于mysql - 为什么 MySql 将 INT 类型列视为 LONG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44332069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com