我是MySQL的新手。我已经设计了一些数据类型为Char的表。现在我想把所有的char数据类型列都改为Varchar,并在Char中提到各自的大小。
For example.
Existing - Phone Char(10)
Expected - Phone Varchar(10)
有大约50个Plus表。我知道如何改变每个表和列的数据类型,但有没有更好的方法一次改变数据类型。
我是MySQL的新手。我已经设计了一些数据类型为Char的表。现在我想把所有的char数据类型列都改为Varchar,并在Char中提到各自的大小。
For example.
Existing - Phone Char(10)
Expected - Phone Varchar(10)
有大约50个Plus表。我知道如何改变每个表和列的数据类型,但有没有更好的方法一次改变数据类型。
4条答案
按热度按时间6ie5vjzr1#
如果你不能写一个脚本来完成这项工作,那就写一个脚本来完成这项工作!
您需要一组ALTER TABLE语句:
这将导致:
跑了就可以早点回家了!
UPDATE:通过添加
group_concat_max_len
停止截断。使长度基于列长度动态变化。6pp0gazn2#
MySQL唯一的线性解决方案:
以上查询将返回所有
ALTER TABLE
语句,示例如下所示:复制结果行并执行,这样您可以更早地回家。
另外,下面是PHP/MySQL解决方案:
z5btuh9x3#
在分析了Web之后,我得到了答案,并使用此查询更改了数据类型。
ffdz8vbo4#
如果您的字段是PK(例如,'id' smallint unsigned),而某些其他数据表的条件约束具有此PK的外部索引键,请使用此查询。
注意:对于现代mysql服务器,从变量-〉sql模式中删除ONLY_FULL_GROUP_BY,默认情况下它包含:
然后插入并执行以下查询:
注意:选中EXTRA OPTIONS以显示结果中字段的全文。2然后复制并执行所有生成的查询。3在变量中恢复ONLY_FULL_GROUP_BY。
好好享受吧!