juicedata/juicefs · error
create table changeLog: %s
Error message
create table changeLog: %s
What it means
Same table-sync failure as the delegationToken case, but for the changeLog table: syncAllTables iterates all metadata tables and wraps any xorm Sync2 failure in a 'create table changeLog: %s' error, aborting initialization.
Source
Thrown at pkg/meta/sql.go:610
return fmt.Errorf("create table session2, sustaind, delfile: %s", err)
}
if err := m.syncTable(new(flock), new(plock), new(dirQuota), new(userGroupQuota)); err != nil {
return fmt.Errorf("create table flock, plock, dirQuota, userGroupQuota: %s", err)
}
if err := m.syncTable(new(dirStats)); err != nil {
return fmt.Errorf("create table dirStats: %s", err)
}
if err := m.syncTable(new(detachedNode)); err != nil {
return fmt.Errorf("create table detachedNode: %s", err)
}
if err := m.syncTable(new(acl)); err != nil {
return fmt.Errorf("create table acl: %s", err)
}
if err := m.syncTable(new(delegationToken)); err != nil {
return fmt.Errorf("create table delegationToken: %s", err)
}
if err := m.syncTable(new(changeLog)); err != nil {
return fmt.Errorf("create table changeLog: %s", err)
}
return nil
}
func (m *dbMeta) doInit(format *Format, force bool) error {
if err := m.syncAllTables(); err != nil {
return err
}
var s = setting{Name: "format"}
var ok bool
err := m.simpleTxn(Background(), func(ses *xorm.Session) (err error) {
ok, err = ses.Get(&s)
return err
})
if err != nil {
return err
}
View on GitHub (pinned to c9a67b23e8)
Solutions
- Grant CREATE/ALTER privileges on the database to the JuiceFS metadata user
- Check for concurrent juicefs format/mount processes and serialized schema setup
- Read the wrapped error to identify the exact DDL problem (e.g. disk full, lock wait timeout)
- Verify DB connectivity and free disk space on the metadata server
Defensive patterns
Strategy: validation
Validate before calling
// Ensure the changeLog table can be created: run one mount/format with a DDL-capable account first GRANT CREATE, ALTER ON jfs.* TO 'jfs'@'%';
Try / catch
if err := meta.Open(sqlURL); err != nil {
// inspect wrapped 'create table changeLog' cause before retrying
log.Fatalf("schema sync failed: %v", err)
} Prevention
- Avoid concurrent format/mount during first initialization
- Monitor DB disk space
- Use an account with full DDL rights for the first mount
When it happens
Trigger: juicefs format or mount on a SQL metadata engine when the changeLog table cannot be created or altered — missing DDL privileges, schema lock, or transient DB error during syncTable(new(changeLog)).
Common situations: Restricted DB account on managed MySQL/RDS without DDL rights; concurrent format runs racing on schema; disk-full database server preventing DDL.
Related errors
- create table delegationToken: %s
- create table setting, counter: %s
- create table edge: %s
- create table node, symlink, xattr: %s
- create table chunk, chunk_ref, delslices: %s
AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06).
Data as JSON: /api/errors/bca202fcfe5bb9d0.
Report an issue: GitHub.