我可以在不丢失任何数据的情况下更改 MySQL 数据库中的列数据类型吗?

Can i change a column data type in a MySQL database without loosing any datas?

我想将某些列的类型从 Varchar 更改为 Double 而不会丢失 table 中的任何数据。我正在与 MySQL 和 Workbench 一起管理数据库。

我做了一些测试...并且 table 充满了 Varchar,当我将列类型更改为 Double 时,它​​工作得很好...以前的数据似乎是自动转换的。正常吗?是 Workbench 谁在做所有的工作还是这是 MySQL 的事情?

另外,我使用 JDBC 和 Java 将数据推送到 table 中,当我使用 PreparedStatement.setString() 方法时它仍然有效当我将列类型更改为 Double 时。

我想我必须自己将所有的行转换成另一个 table,但如果它能像那样工作那就太完美了。

多谢指教!

MySQL 在您使用 ALTER TABLE 语句时为您完成工作(这是 MySQL Workbench 所做的)。

看官方documentation:

When you change a data type using CHANGE or MODIFY, MySQL tries to convert existing column values to the new type as well as possible.

Warning This conversion may result in alteration of data. For example, if you shorten a string column, values may be truncated. To prevent the operation from succeeding if conversions to the new data type would result in loss of data, enable strict SQL mode before using ALTER TABLE (see Section 5.1.7, “Server SQL Modes”).

当然,你需要有兼容的类型。

在 MYSQL 中,您首先复制要从中更改数据类型的列,将类型转换为新列并将其重命名为旧 one.If 您更改数据类型,它可以完美地工作,但用于查看perspective.It 不是正常行为,定义明确的方法就是上面提到的。