遇到个问题说需要重建一个字段。然后尝试删除:
MariaDB [cmxt_log]> desc tl_user_sent_stat;
+———————-+————-+——+—–+———————+——-+
| Field | Type | Null | Key | Default | Extra |
+———————-+————-+——+—–+———————+——-+
| provider_id | varchar(60) | YES | MUL | NULL | |
| org_id | varchar(60) | YES | | NULL | |
| user_id | varchar(60) | YES | | NULL | |
| log_time | datetime | NO | | 0000-00-00 00:00:00 | |
| deliver_result | int(11) | YES | | NULL | |
| sent_count1 | int(11) | YES | | NULL | |
| sent_count2 | int(11) | YES | | NULL | |
| sent_count3 | int(11) | YES | | NULL | |
| sent_count4 | int(11) | YES | | NULL | |
| sent_count5 | int(11) | YES | | NULL | |
| sent_count6 | int(11) | YES | | NULL | |
| sent_count7 | int(11) | YES | | NULL | |
| sent_count8 | int(11) | YES | | NULL | |
| sent_count9 | int(11) | YES | | NULL | |
| msg_sent_size_sum | bigint(20) | YES | | NULL | |
| msg_sent_count | int(11) | YES | | NULL | |
| max_msg_size | int(11) | YES | | NULL | |
| spam_influence_count | int(11) | YES | | NULL | |
| spam_count | int(11) | YES | | NULL | |
+———————-+————-+——+—–+———————+——-+
19 rows in set (0.024 sec)
报错:
MariaDB [cmxt_log]> alter table tl_user_sent_stat drop column spam_count ;
ERROR 1067 (42000): Invalid default value for ‘log_time’
可以看到NO_ZERO_IN_DATE,NO_ZERO_DATE,限制了不允许使用0000-00 这种格式。
MariaDB [cmxt_log]> show variables like “%mode%”;
+————————–+————————————————————————————————————————+
| Variable_name | Value |
+————————–+————————————————————————————————————————+
| gtid_strict_mode | OFF |
| innodb_autoinc_lock_mode | 1 |
| innodb_strict_mode | ON |
| old_mode | |
| pseudo_slave_mode | OFF |
| slave_ddl_exec_mode | IDEMPOTENT |
| slave_exec_mode | STRICT |
| slave_parallel_mode | optimistic |
| sql_mode | STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
| wsrep_gtid_mode | OFF |
+————————–+————————————————————————————————————————+
10 rows in set (0.089 sec)
使用命令把NO_ZERO_IN_DATE,NO_ZERO_DATE,去掉。
MariaDB [cmxt_log]> set session
-> sql_mode=’ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
Query OK, 0 rows affected (0.009 sec)
MariaDB [cmxt_log]> show variables like “%mode%”;
+————————–+————————————————————————————————————–+
| Variable_name | Value |
+————————–+————————————————————————————————————–+
| gtid_strict_mode | OFF |
| innodb_autoinc_lock_mode | 1 |
| innodb_strict_mode | ON |
| old_mode | |
| pseudo_slave_mode | OFF |
| slave_ddl_exec_mode | IDEMPOTENT |
| slave_exec_mode | STRICT |
| slave_parallel_mode | optimistic |
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
| wsrep_gtid_mode | OFF |
+————————–+————————————————————————————————————–+
10 rows in set (0.001 sec)
在执行删除,成功了。
MariaDB [cmxt_log]> alter table tl_user_sent_stat drop column spam_count ;
Query OK, 92555 rows affected (0.535 sec)
Records: 92555 Duplicates: 0 Warnings: 0