为什么MySql将INT类型的列视为长列?

为什么MySql将INT类型的列视为长列?,mysql,Mysql,(MySQL版本5.6.36) 数据库中有许多表的列类型为INT。 我刚刚对我们货币表中的结果数据表运行了一个linq查询。。。并隐式地将id字段转换为int 发生“指定的强制转换无效”异常 所以我决定在数据行上运行一个标准的foreach,获取id列的类型。。。果然,它是以INT64的形式返回的 这把我带进了兔子洞。。。我打开了一个控制台,启动了mysql命令行,打开了选项--column type info。。。然后做了一个简单的查询 mysql> select id from cur

(MySQL版本5.6.36)

数据库中有许多表的列类型为INT。 我刚刚对我们货币表中的结果数据表运行了一个linq查询。。。并隐式地将id字段转换为int

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

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

这把我带进了兔子洞。。。我打开了一个控制台,启动了mysql命令行,打开了选项--column type info。。。然后做了一个简单的查询

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 

);

希望你明白我的意思。抱歉,我正在用手机写信。

无论是否未签名,它仍然返回相同的:
类型:LONG
我再次阅读了您的问题,发现所有表格都返回LONG。我做了一些阅读,发现长数据类型是ORACLE的东西。我甚至检查了我的MYSQL数据库,没有长数据类型。我想说的是,你的数据库可能是ORACLE,但你的代码显示的是MYSQL。我只是感到困惑。这可能会有帮助[谢谢,但我已经通读了…我看不到任何东西可以解释这种现象。我不太确定问题在于控制台响应,因为在MysqlWork bench和SQL Yog上,数据类型没有改变。请分享您使用的控制台。使用mysql服务器附带的stock console应用程序-mysql