{"record":{"id":"d1e475a2e98000cb","repo":"vitessio/vitess","slug":"cannot-determine-database-flavor-details-for-versi","errorCode":null,"errorMessage":"cannot determine database flavor details for version %s","messagePattern":"cannot determine database flavor details for version (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"go/vt/mysqlctl/blackbox/utils.go","lineNumber":168,"sourceCode":"\n// NeedInnoDBRedoLogSubdir indicates whether we need to create a redo log subdirectory.\n// Starting with MySQL 8.0.30, the InnoDB redo logs are stored in a subdirectory of the\n// <innodb_log_group_home_dir> (<datadir>/. by default) called \"#innodb_redo\". See:\n//\n//\thttps://dev.mysql.com/doc/refman/8.0/en/innodb-redo-log.html#innodb-modifying-redo-log-capacity\nfunc NeedInnoDBRedoLogSubdir() (needIt bool, err error) {\n\tmysqldVersionStr, err := mysqlctl.GetVersionString()\n\tif err != nil {\n\t\treturn needIt, err\n\t}\n\t_, sv, err := mysqlctl.ParseVersionString(mysqldVersionStr)\n\tif err != nil {\n\t\treturn needIt, err\n\t}\n\tversionStr := fmt.Sprintf(\"%d.%d.%d\", sv.Major, sv.Minor, sv.Patch)\n\tcapableOf := mysql.ServerVersionCapableOf(versionStr)\n\tif capableOf == nil {\n\t\treturn needIt, fmt.Errorf(\"cannot determine database flavor details for version %s\", versionStr)\n\t}\n\treturn capableOf(capabilities.DynamicRedoLogCapacityFlavorCapability)\n}\n\nconst MysqlShutdownTimeout = 1 * time.Minute\n\nfunc SetBuiltinBackupMysqldDeadline(t time.Duration) time.Duration {\n\told := mysqlctl.BuiltinBackupMysqldTimeout\n\tmysqlctl.BuiltinBackupMysqldTimeout = t\n\n\treturn old\n}\n\nfunc createBackupDir(root string, dirs ...string) error {\n\tfor _, dir := range dirs {\n\t\tif err := os.MkdirAll(path.Join(root, dir), 0o755); err != nil {\n\t\t\treturn err\n\t\t}","sourceCodeStart":150,"sourceCodeEnd":186,"githubUrl":"https://github.com/vitessio/vitess/blob/01a25a7d176f94613b8d59d799f438380a8760e4/go/vt/mysqlctl/blackbox/utils.go#L150-L186","documentation":"NeedInnoDBRedoLogSubdir formats the MySQL server version and asks mysql.ServerVersionCapableOf for the matching flavor capabilities. When no flavor matches the version string, this error is returned because Vitess cannot decide whether InnoDB redo-log handling applies. It guards version-specific backup behavior against unknown or unsupported MySQL flavors.","triggerScenarios":"During backup/restore (SetupCluster, TestExecuteBackup*) the connected mysqld reports a version for which ServerVersionCapableOf returns nil — e.g. a MariaDB version, an unsupported MySQL 8.x point release, or a version parsed as 0.0.0 because version detection failed.","commonSituations":"Pointing Vitess at MariaDB or Percona when only MySQL flavors are mapped; custom MySQL builds reporting unusual version strings; mysqld version string not parseable so Major/Minor/Patch are zero.","solutions":["Print the actual mysqld version (`mysqld --version`) and confirm it is a flavor/Version CapableOf supports.","Check mysql.ServerVersionCapableOf mappings for the version you run; upgrade Vitess if the flavor is newer than supported.","Force the expected flavor/version by fixing the mysqld binary or container image used by mysqlctl.","If you maintain a fork, add the missing flavor capability mapping for your version."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"sv, err := mysql.GetVersionStringCapabilities(versionString)\nif err != nil || mysql.ServerVersionCapableOf(versionString) == nil {\n\treturn fmt.Errorf(\"unsupported MySQL flavor/version: %s\", versionString)\n}","typeGuard":null,"tryCatchPattern":"needIt, err := utils.NeedInnoDBRedoLogSubdir(ctx, cnf)\nif err != nil {\n\treturn fmt.Errorf(\"redo log capability check failed (check mysqld version/flavor): %w\", err)\n}","preventionTips":["Pin mysqld to a Vitess-supported MySQL version and flavor in your deployment.","Log the detected server version at startup to catch parsing surprises early.","Test new MySQL point releases against Vitess backup/restore before upgrading clusters."],"tags":["mysql","version-compatibility","backup"],"backgroundTag":"unsupported-mysql-version","analyzedSha":"01a25a7d176f94613b8d59d799f438380a8760e4","analyzedAt":"2026-09-01T17:28:30.605Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}