(MySQL版本5.6.36)
我们的数据库中有许多表,其列的类型为INT。 我只是从我们的货币表中对结果DataTable运行一个linq查询...并且隐式地将id字段转换为int。
A"指定演员表无效"发生了异常。
所以我决定在数据行上运行一个标准的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,而不是LONG,然后返回INT24。
只是想知道我遗失了一些简单的东西吗?
答案 0 :(得分:0)
只需删除该表并创建一个新的未添加到id定义
的表CREATE TABLE currency (
id int(11) unsigned NOT NULL AUTU_INCREMENT,
// the other definitions
);
希望你明白这一点。对不起,我正在通过手机写信。