-1

我不知道为什么我不能将列的数据类型从 TEXT 更改为 INT。这是我正在使用的脚本。

ALTER TABLE covidworlddata.coviddeaths
ALTER COLUMN total_deaths INT;

错误 1366:不正确的整数值:第 1 行 SQL 语句中列“total_deaths”的“”:ALTER TABLE covidworlddatacoviddeaths 更改列total_deaths total_deathsINT(255) NULL 默认 NULL

错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“INT”附近使用正确的语法

是因为 csv 的第一行是列名(例如 total_deaths),如下所示? 源数据 csv

4

2 回答 2

1
  1. ALTER COLUMN不允许更改数据类型。它只允许您设置/删除 DEFAULT 值并更改列的可见性。您必须使用CHANGE COLUMNMODIFY COLUMN。请参阅ALTER TABLE 语句

此问题导致#1064。

  1. 您要更改的列现在具有字符串数据类型,并且包含空字符串作为值。当您修改列定义时,服务器必须转换现有值的数据类型。空字符串无法正确转换为数值数据类型。您必须事先更新表并将列值设置为可以正确转换的值(例如,可以是'0'NULL)。

此问题导致#1366。

于 2021-10-15T06:08:21.783 回答
0

您有语法错误,因此请检查语法。至少你需要这个

ALTER TABLE covidworlddata.coviddeaths
CHANGE COLUMN total_deaths total_deaths INT;

这是旧列名、新列名(此处相同),然后是列定义的其余部分。

参考:https ://dev.mysql.com/doc/refman/8.0/en/alter-table.html

于 2021-10-14T22:21:51.557 回答