Error 1364: Field 'dashboard_id' doesn't have a default value

Viewed 68

系统版本

  • 前端版本:6.0.0-ga.5
  • 后端版本:v6.0.0-ga.5-88040bf27716e473dd437f8c954a4dc88339b676

由 n9e-v6.0.0-ga.3 直接升级至 ga.5,仅覆盖文件,未执行 SQL。

步骤

时序指标 - 即时查询

排错

  1. 查看升级 SQL,执行 alter table chart_share add datasource_id bigint unsigned not null default 0;
  2. 重启 n9e 错误依旧
       Table: chart_share
Create Table: CREATE TABLE `chart_share` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `cluster` varchar(128) NOT NULL,
  `dashboard_id` bigint unsigned NOT NULL,
  `configs` text,
  `create_at` bigint NOT NULL DEFAULT '0',
  `create_by` varchar(64) NOT NULL DEFAULT '',
  `datasource_id` bigint unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `create_at` (`create_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

问题

  1. v6 版本间正确的升级方式是什么
  2. 上述问题如何解决
3 Answers

n9e.sql 里新的表结构,已经取消了该字段,可以删除该字段也可以为该字段设置新的默认值

CREATE TABLE `chart_share` (
    `id` bigint unsigned not null auto_increment,
    `cluster` varchar(128) not null,
    `datasource_id` bigint unsigned not null default 0,
    `configs` text,
    `create_at` bigint not null default 0,
    `create_by` varchar(64) not null default '',
    primary key (`id`),
    key (`create_at`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;

把这个字段删除应该就可以了
dashboard_id bigint unsigned NOT NULL,

你这个 table 中已经有了 datasource_id,而且有默认值了,mysql 不应该再报错了。