所有返回“字段 'id' 没有默认值”的元数据库操作

     2023-05-08     18

关键词:

【中文标题】所有返回“字段 \'id\' 没有默认值”的元数据库操作【英文标题】:All Metabase operations returning "Field 'id' doesn't have a default value"所有返回“字段 'id' 没有默认值”的元数据库操作 【发布时间】:2020-03-17 17:40:35 【问题描述】:

我们正在将 Metabase v0.24.1 部署从 AWS RDS MySQL 5.7 迁移到 AWS Aurora MySQL Serverless(兼容 5.6)。当我们启动 Metabase 时,应用程序尝试运行的每个查询都会返回某种形式的此错误:

Field 'id' doesn't have a default value

完全错误:

03-17 16:07:57 [1mERROR metabase.middleware[0m :: [31mPOST /api/database 500 (68 ms) (0 DB calls)[0m
:message "Field 'id' doesn't have a default value",
 :stacktrace
 ["api.database$fn__29894$fn__29897.invoke(database.clj:233)"
  "api.common.internal$do_with_caught_api_exceptions.invokeStatic(internal.clj:229)"
  "api.common.internal$do_with_caught_api_exceptions.invoke(internal.clj:224)"
  "api.database$fn__29894.invokeStatic(database.clj:215)"
  "api.database$fn__29894.invoke(database.clj:215)"
  "middleware$enforce_authentication$fn__38784.invoke(middleware.clj:120)"
  "api.routes$fn__38908.invokeStatic(routes.clj:58)"
  "api.routes$fn__38908.invoke(routes.clj:58)"
  "routes$fn__39540$fn__39541.doInvoke(routes.clj:64)"
  "routes$fn__39540.invokeStatic(routes.clj:60)"
  "routes$fn__39540.invoke(routes.clj:60)"
  "middleware$log_api_call$fn__38883$fn__38885.invoke(middleware.clj:329)"
  "middleware$log_api_call$fn__38883.invoke(middleware.clj:328)"
  "middleware$add_security_headers$fn__38833.invoke(middleware.clj:243)"
  "middleware$bind_current_user$fn__38788.invoke(middleware.clj:140)"
  "middleware$maybe_set_site_url$fn__38837.invoke(middleware.clj:266)"],
 :sql-exception-chain ["SQLException:" "Message: Field 'id' doesn't have a default value" "SQLState: HY000" "Error Code: 1364"]

尝试添加新数据库也会通过元数据库 UI 返回相同的错误。

我们已验证 RDS db 参数在我们正在迁移到和从中迁移的数据库之间是相同的,但引擎默认配置可能会在 Aurora Serverless 和 MySQL 5.7 默认值之间发生变化。

另一个值得注意的变化是,我们正在从在我们拥有的 EC2 实例上运行的普通 ECS 任务转移到 Fargate 任务,但两者之间的任务定义是相同的。

编辑:我在 sql_mode 参数中发现了 Aurora Serverless 和 MySQL 5.7 之间的另一个配置不一致。在 5.7 中,默认设置为 NO_ENGINE_SUBSTITUTION,在 serverless 中设置为 0

在我的无服务器部署上将sql_mode 更新为NO_ENGINE_SUBSTITUTION 后,我发现数据库本身的实际配置仍然不一致。 SELECT @@sql_mode; 在 5.7 部署中返回 NO_ENGINE_SUBSTITUTION,在无服务器部署中返回 STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,即使参数组未设置为此值。

编辑 2:我没有提到我们用于将数据传输到新数据库的方法,即 AWS DMS 版本 3.3.1。 DMS 似乎没有复制需要存在于元数据库中id 列上的auto_increment 表属性。这可能是根本问题。

【问题讨论】:

【参考方案1】:

此问题的根本原因是元数据库中的 id 列没有 auto_increment 属性,即使它们有值,它们也被视为没有值。

这是因为,我们用来传输数据的 AWS DMS 不会复制架构的所有细节:

https://dba.stackexchange.com/questions/138946/aws-dms-creates-tables-with-no-auto-increment

解决此问题的方法是首先使用标准 mysqldump --no-data 执行架构迁移,然后使用 DMS 填充数据。

【讨论】:

嘿@jjno91,我很好奇您在元数据库中使用 Aurora Serverless 的体验 - 每月账单是什么样的?从理论上讲,我想会节省成本,但我不知道 Metabase 在空闲时访问其数据库的频率。

休眠:字段“id”没有默认值

...107:55:42【问题描述】:我有一个网络应用程序,它有一个数据库Customer实体和Car实体。我在Car和Customer之间有ManyToMany关系(或者至少我打算这样做),它在我的BookedCar类中。BookedCar:@Entity@Table(nam 查看详情

休眠:“字段 'id' 没有默认值”

】休眠:“字段\\\'id\\\'没有默认值”【英文标题】:Hibernate:"Field\'id\'doesn\'thaveadefaultvalue"休眠:“字段\'id\'没有默认值”【发布时间】:2010-10-2217:10:29【问题描述】:我正面临一个我认为是Hibernate的简单问题,但无法解... 查看详情

java.sql.SQLException:字段“client_id”没有默认值

...1【问题描述】:我正在尝试使用JSON(通过Postman)在我的数据库表(Clients、Cars和Rentals上使用POST和GET方法>),其中clie 查看详情

SQLSTATE [HY000]:一般错误:1364 字段“author_id”没有默认值

...述】:我实际上是Laravel框架的新手。一直试图发布到Mysql数据库,我的Author_id出现错误。SQLSTATE[HY 查看详情

Spring Hibernate mysql:字段'id'没有默认值[重复]

】SpringHibernatemysql:字段\\\'id\\\'没有默认值[重复]【英文标题】:SpringHibernatemysql:Field\'id\'doesn\'thaveadefaultvalue[duplicate]SpringHibernatemysql:字段\'id\'没有默认值[重复]【发布时间】:2020-01-0220:47:15【问题描述】:我知道之前有人问过... 查看详情

java.sql.SQLException:字段 'supplier_id' 没有默认值

】java.sql.SQLException:字段\\\'supplier_id\\\'没有默认值【英文标题】:java.sql.SQLException:Field\'supplier_id\'doesn\'thaveadefaultvaluejava.sql.SQLException:字段\'supplier_id\'没有默认值【发布时间】:2014-12-0719:31:00【问题描述】:我从这里收到一条... 查看详情

字段 'user_id' 没有默认值,但设置为 auto_increment

】字段\\\'user_id\\\'没有默认值,但设置为auto_increment【英文标题】:Field\'user_id\'doesn\'thaveadefaultvalue,butissettoauto_increment字段\'user_id\'没有默认值,但设置为auto_increment【发布时间】:2020-03-0811:56:07【问题描述】:所以我正在尝试构... 查看详情

SQLSTATE[HY000]:一般错误:1364 字段“parent_id”没有默认值

】SQLSTATE[HY000]:一般错误:1364字段“parent_id”没有默认值【英文标题】:SQLSTATE[HY000]:Generalerror:1364Field\'parent_id\'doesn\'thaveadefaultvalue【发布时间】:2019-11-0820:06:50【问题描述】:我正在建立自己的论坛作为练习,我设置了具有多... 查看详情

为啥我的资源不返回所有具有“with”方法的元数据?

】为啥我的资源不返回所有具有“with”方法的元数据?【英文标题】:Whymyresourcedonotreturnallmetadatahaving"with"method?为什么我的资源不返回所有具有“with”方法的元数据?【发布时间】:2021-09-0913:31:34【问题描述】:在lumen8... 查看详情

获取错误在 Laravel 5.4 中没有默认值

...题描述】:我收到此错误:SQLSTATE[HY000]:一般错误:1364字段\'user_id\'没有默认值(SQL:插入day_schedules(updated_at,created_at)值(2017-03-1306: 查看详情

mysql数据库的约束

...家好!我是保护小周ღ,本期为大家带来的是MySQL数据库中对表的约束,主要有null(空约束),unique(唯一约束),primarykey(主键约束),default(默认值约束),forelgnkey(外键约束),check(检查约束),超多实例... 查看详情

wcf 数据服务是不是可以返回 json 格式的元数据?

】wcf数据服务是不是可以返回json格式的元数据?【英文标题】:Isitpossibleforwcfdataservicestoreturnmetadatainjsonformat?wcf数据服务是否可以返回json格式的元数据?【发布时间】:2012-09-1906:37:29【问题描述】:wcf数据服务是否可以返回json... 查看详情

phpwordpress:返回图像的元数据(代码片段)

查看详情

如何获取 QMediaPlaylist 中所有媒体的元数据?

】如何获取QMediaPlaylist中所有媒体的元数据?【英文标题】:HowtogetmetadataofallmediainQMediaPlaylist?【发布时间】:2018-04-0810:46:30【问题描述】:我正在开发一个实现媒体播放器的Ubuntuqt项目。由于QMediaObject::metaData只能获取当前媒体的... 查看详情

Cloud Storage for Firebase:下载所有文件的元数据

】CloudStorageforFirebase:下载所有文件的元数据【英文标题】:CloudStorageforFirebase:downloadmetadataofallfiles【发布时间】:2019-12-1801:45:36【问题描述】:问题:有没有办法下载云存储中所有文件的元数据?参考:我查看了AngularFire2的文... 查看详情

Left Join with same table and group by 以相反的顺序返回重复的元组

...0-05-2523:21:47【问题描述】:我正在尝试查询包含以下列的数据库(不归我所有):NumEpoca(epoch),Turma(class),Dia(day-i 查看详情

拿到hive的元数据库权限能否拿到所有用户的数据?

...数据?概述一、存储Hive版本的元数据表(VERSION)二、Hive数据库相关的元数据表(DBS、DATABASE_PARAMS)1、DBS2、DATABASE_PARAMS三、Hive表和视图相关的元数据表1、TBLS2、TABLE_PARAMS3、TBL_PRIVS四、Hive文件存储信息相关的元数据表1、SDS2、SD_P... 查看详情

msyql操数据dml

DDL语句:操作之后什么都不返回.DQL语句:操作之后会返回一个查询的结果集.DML语句:操作之后会返回一个受影响的行数(成功操作几条数据).------------------------------------------------------插入操作:插入语句:一次插入操作只插入一行数据.I... 查看详情