,我发现另一种解决方案是这样的: -
获取所有列的名称把它在阵列... 现在将值列阵列插入 - 与所有这些数组的ZERO值都没有值。 例如: 在一个表中,我们有COLUMN 名姓氏COMPNAME PHONO电子邮件地址ALTERPERSON ALTERPHONE ALTEREMAIL 现在迁移后,我们看到了eeror
Error Code: 1364. Field 'field' doesn't have a default value
如果我们运行一个INSERT查询LIKE
mysqli_query($con,'insert into table (NAME,LASTNAME,COMPNAME,PHONO,EMAIL,ADDRESS) values (NAME,LASTNAME,COMPNAME,PHONO,EMAIL,ADDRESS)')
现在它会给出错误...
所以只需打开表 从DB获取所有列值。TABLE 把它放在一个数组中,或使用while循环或for循环一个接一个地执行...
检查每列的插入值 如果插入值等于零或NULL,则插入零,然后插入零解决所有问题。
为什么ZERO -
,因为它会为VARCHAR,TEXT,INT,BIGINT和除了时间或日期功能和日期/时间数据类型许多数据类型的工作在默认情况下得到了零个值...
===============================另一个选项...
运行一个PHP代码 get all TABLE名称 然后对于每个TABLE名称 获取所有COLUMN名称
和在功能上运行此命令下循环
ALTER TABLE DB.TABLEnAME CHANGE columnNAME_A
columnNAME_A
VARCHAR(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL;
=======================
并对其做
有人低估了这个问题。不知道为什么? –
我减轻了这一点,你的问题并没有那么糟糕;)要修改它在数据库端而不改变模式,你必须改变你的列以给它们一个默认值。 [我如何修改mysql表列的默认值?](http:// stackoverflow。com/questions/1770203/how-do-i-alter-a-mysql-table-column-defaults)可能会有所帮助。 –
hmm..okay ..是否有可能在整个数据库的单个查询中? –