Database import failed

Support intro

Sorry to hear you’re facing problems. :slightly_frowning_face:

The community help forum (help.nextcloud.com) is for home and non-enterprise users. Support is provided by other community members on a best effort / “as available” basis. All of those responding are volunteering their time to help you.

If you’re using Nextcloud in a business/critical setting, paid and SLA-based support services can be accessed via portal.nextcloud.com where Nextcloud engineers can help ensure your business keeps running smoothly.

Getting help

In order to help you as efficiently (and quickly!) as possible, please fill in as much of the below requested information as you can.

Before clicking submit: Please check if your query is already addressed via the following resources:

(Utilizing these existing resources is typically faster. It also helps reduce the load on our generous volunteers while elevating the signal to noise ratio of the forums otherwise arising from the same queries being posted repeatedly).

Some or all of the below information will be requested if it isn’t supplied; for fastest response please provide as much as you can. :heart:

The Basics

  • Nextcloud Server version (e.g., 29.x.x):
    • 30.0.4
  • Operating system and version (e.g., Ubuntu 24.04):
    • Ubuntu 24.04
  • Web server and version (e.g, Apache 2.4.25):
    • Apache 2.4.25
  • Reverse proxy and version _(e.g. nginx 1.27.2)
    • Apache 2.4.25
  • PHP version (e.g, 8.3):
    • 8.3
  • Is this the first time you’ve seen this error? (Yes / No):
    • YES
  • When did this problem seem to first start?
    • During database restore
  • Installation method (e.g. AlO, NCP, Bare Metal/Archive, etc.)
    • Archive
  • Are you using CloudfIare, mod_security, or similar? (Yes / No)
    • No

Summary of the issue you are facing:

I would like to migrate my instance to a new server. I have followed backup and restore guide here but database import fails everytime.
By doing

sudo mysql -u root -p nextcloud < /home/sysadmin/nextcloud241218.sql 

First error, for example, is

ALTER TABLE `oc_filecache`
  MODIFY `fileid` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=18987483
--------------

ERROR 1075 (42000) at line 4950272: Incorrect table definition; there can be only one auto column and it must be defined as a key

Steps to replicate it (hint: details matter!):

  1. Use backup guide for backing up your NC instance
  2. Try a restore

Nextcloud

The output of occ config:list system or similar is best, but, if not possible, the contents of your config.php file from /path/to/nextcloud is fine (make sure to remove any identifiable information!):

{
    "system": {
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "memcache.local": "\\OC\\Memcache\\APCu",
        "trusted_domains": [
            "172.16.19.201",
            "
        ],***REMOVED SENSITIVE VALUE***" 
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "trashbin_retention_obligation": "90, 120",
        "versions_retention_obligation": "auto, 30",
        "filelocking.enabled": true,
        "dbtype": "mysql",
        "version": "30.0.4.1",
        "overwrite.cli.url": "https:\/\/172.16.19.201:16177\/nextcloud",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "maintenance_window_start": 1,
        "session_lifetime": 1800,
        "remember_login_cookie_lifetime": 0,
        "session_keepalive": false,
        "mail_smtpmode": "smtp",
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpauthtype": "PLAIN",
        "mail_smtpauth": true,
        "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
        "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": "587",
        "mail_smtpsecure": "tls",
        "theme": "",
        "htaccess.RewriteBase": "\/owncloud",
        "appstore.experimental.enabled": true,
        "updater.release.channel": "stable",
        "installed": true,
        "log_type": "file",
        "logfile": "\/mnt\/nc_data\/nextcloud.log",
        "logfilemode": 416,
        "loglevel": 0,
        "logdateformat": "F d, Y H:i:s",
        "updatechecker": false,
        "maintenance": false,
        "app_install_overwrite": [
            "calendar",
            "ocsms",
            "files_external_dropbox",
            "keeweb",
            "admin_notifications",
            "twofactor_rcdevsopenotp",
            "music",
            "bruteforcesettings",
            "previewgenerator",
            "podcast",
            "files_texteditor",
            "breezedark",
            "impersonate",
            "facerecognition",
            "ransomware_protection",
            "issuetemplate",
            "files_rightclick"
        ],
        "default_phone_region": "IT",
        "twofactor_enforced": "false",
        "twofactor_enforced_groups": [
            "admin"
        ],
        "twofactor_enforced_excluded_groups": [
            "users"
        ],
        "enabledPreviewProviders": [
            "OC\\Preview\\BMP",
            "OC\\Preview\\GIF",
            "OC\\Preview\\JPEG",
            "OC\\Preview\\MarkDown",
            "OC\\Preview\\MP3",
            "OC\\Preview\\PNG",
            "OC\\Preview\\TXT",
            "OC\\Preview\\XBitmap",
            "OC\\Preview\\OpenDocument",
            "OC\\Preview\\Krita",
            "OC\\Preview\\Movie",
            "OC\\Preview\\Image",
            "OC\\Preview\\TIFF"
        ],
        "0": "opcache.revalidate_freq = 60",
        "data-fingerprint": "17b51656261e5c670007a7b34c5b32d2",
        "preview_max_x": 2048,
        "preview_max_y": 2048,
        "jpeg_quality": 60,
        "memories.exiftool": "\/var\/www\/html\/nextcloud\/apps\/memories\/bin-ext\/exiftool-amd64-glibc",
        "memories.vod.path": "\/var\/www\/html\/nextcloud\/apps\/memories\/bin-ext\/go-vod-amd64",
        "memories.vod.ffmpeg": "\/usr\/bin\/ffmpeg",
        "memories.vod.ffprobe": "\/usr\/bin\/ffprobe",
        "memories.index.path": "\/InstantUpload",
        "log_rotate_size": 524288000,
        "memories.db.triggers.fcu": true
    }
}

Apps

The output of occ app:list (if possible).

Enabled:
  - activity: 3.0.0
  - app_api: 4.0.3
  - bruteforcesettings: 3.0.0
  - calendar: 5.0.7
  - cloud_federation_api: 1.13.0
  - contacts: 6.1.1
  - cookbook: 0.11.2
  - dav: 1.31.1
  - facerecognition: 0.9.60
  - federatedfilesharing: 1.20.0
  - files: 2.2.0
  - files_downloadlimit: 3.0.0
  - files_external: 1.22.0
  - files_reminders: 1.3.0
  - files_sharing: 1.22.0
  - files_trashbin: 1.20.1
  - files_versions: 1.23.0
  - impersonate: 1.17.0
  - logreader: 3.0.0
  - lookup_server_connector: 1.18.0
  - memories: 7.4.1
  - oauth2: 1.18.1
  - phonetrack: 0.8.1
  - photos: 3.0.2
  - previewgenerator: 5.7.0
  - provisioning_api: 1.20.0
  - related_resources: 1.5.0
  - serverinfo: 2.0.0
  - settings: 1.13.0
  - theming: 2.5.0
  - twofactor_backupcodes: 1.19.0
  - twofactor_totp: 12.0.0-dev
  - updatenotification: 1.20.0
  - viewer: 3.0.0
  - webhook_listeners: 1.1.0-dev
  - workflowengine: 2.12.0
Disabled:
  - admin_audit: 1.20.0
  - breezedark: 29.0.0 (installed 29.0.0)
  - circles: 30.0.0 (installed 23.0.0)
  - comments: 1.20.1 (installed 0.2)
  - contactsinteraction: 1.11.0 (installed 1.8.0)
  - dashboard: 7.10.0 (installed 1.1)
  - encryption: 2.18.0
  - federation: 1.20.0 (installed 0.0.4)
  - files_pdfviewer: 3.0.0 (installed 0.8)
  - files_rightclick: 0.15.1 (installed 0.15.1)
  - files_texteditor: 2.15.1 (installed 2.15.1)
  - firstrunwizard: 3.0.0 (installed 1.1)
  - keeweb: 0.6.20 (installed 0.6.20)
  - metadata: 0.21.0 (installed 0.21.0)
  - nextcloud_announcements: 2.0.0 (installed 1.12.0)
  - notifications: 3.0.0 (installed 2.11.1)
  - password_policy: 2.0.0 (installed 1.0.0)
  - privacy: 2.0.0 (installed 1.7.0)
  - ransomware_protection: 1.14.0 (installed 1.14.0)
  - recommendations: 3.0.0 (installed 1.2.0)
  - sharebymail: 1.20.0 (installed 1.13.0)
  - support: 2.0.0 (installed 1.0.0)
  - survey_client: 2.0.0 (installed 1.0.0)
  - suspicious_login: 8.0.0
  - systemtags: 1.20.0 (installed 1.17.0)
  - text: 4.1.0 (installed 1.1.0)
  - twofactor_nextcloud_notification: 4.0.0 (installed 3.7.0)
  - user_ldap: 1.21.0
  - user_status: 1.10.0 (installed 1.3.1)
  - weather_status: 1.10.0 (installed 1.0.0)

Tips for increasing the likelihood of a response

  • Use the preformatted text formatting option in the editor for all log entries and configuration output.
  • If screenshots are useful, feel free to include them.
    • If possible, also include key error output in text form so it can be searched for.
  • Try to edit log output only minimally (if at all) so that it can be ran through analyzers / formatters by those trying to help you.

Can you post the ~30 lines in your backup sql file that look something like:

DROP TABLE IF EXISTS `oc_filecache`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `oc_filecache` (
[...]
) ENGINE=InnoDB AUTO_INCREMENT=xxxxxxxx DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=COMPRESSED;
/*!40101 SET character_set_client = @saved_cs_client */;

Don’t post anything past the Dumping data for table oc_filecache comment.

Also, what version of MySQL is the source server? And what version of MySQL is the target server?

Here it is:

DROP TABLE IF EXISTS `oc_filecache`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `oc_filecache` (
  `fileid` bigint(20) NOT NULL AUTO_INCREMENT,
  `storage` bigint(20) NOT NULL DEFAULT 0,
  `path` varchar(4000) DEFAULT NULL,
  `path_hash` varchar(32) NOT NULL DEFAULT '',
  `parent` bigint(20) NOT NULL DEFAULT 0,
  `name` varchar(250) DEFAULT NULL,
  `mimetype` bigint(20) NOT NULL DEFAULT 0,
  `mimepart` bigint(20) NOT NULL DEFAULT 0,
  `size` bigint(20) NOT NULL DEFAULT 0,
  `mtime` bigint(20) NOT NULL DEFAULT 0,
  `storage_mtime` bigint(20) NOT NULL DEFAULT 0,
  `encrypted` int(11) NOT NULL DEFAULT 0,
  `unencrypted_size` bigint(20) NOT NULL DEFAULT 0,
  `etag` varchar(40) DEFAULT NULL,
  `permissions` int(11) DEFAULT 0,
  `checksum` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`fileid`),
  UNIQUE KEY `fs_storage_path_hash` (`storage`,`path_hash`),
  KEY `fs_parent_name_hash` (`parent`,`name`),
  KEY `fs_storage_mimetype` (`storage`,`mimetype`),
  KEY `fs_storage_mimepart` (`storage`,`mimepart`),
  KEY `fs_storage_size` (`storage`,`size`,`fileid`),
  KEY `fs_mtime` (`mtime`),
  KEY `fs_size` (`size`),
  KEY `fs_id_storage_size` (`fileid`,`storage`,`size`),
  KEY `fs_storage_path_prefix` (`storage`,`path`(64)),
  KEY `fs_parent` (`parent`),
  KEY `memories_parent_mimetype` (`parent`,`mimetype`),
  KEY `fs_name_hash` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=18987697 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=COMPRESSED;
/*!40101 SET character_set_client = @saved_cs_client */;

Source db version is Mariadb 10.6.20, destination is Mariadb 11.4.3

Thanks a lot

import now quits with this log:

ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=COMPRESSED
                    32 Query    /*!40101 SET character_set_client = @saved_cs_client */
                    32 Query    LOCK TABLES `oc_whats_new` WRITE
                    32 Query    /*!40000 ALTER TABLE `oc_whats_new` DISABLE KEYS */
                    32 Query    INSERT INTO `oc_whats_new` VALUES 

                    (list of values)

                    32 Query    /*!40000 ALTER TABLE `oc_whats_new` ENABLE KEYS */
                    32 Query    UNLOCK TABLES
                    32 Query    /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */
                    32 Query    /*!40101 SET SQL_MODE=@OLD_SQL_MODE */
                    32 Query    /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */
                    32 Query    /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */
                    32 Query    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */
                    32 Query    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */
                    32 Query    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */
                    32 Query    /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */
                    32 Quit

Whats_new table backup:

DROP TABLE IF EXISTS `oc_whats_new`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `oc_whats_new` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `version` varchar(64) NOT NULL DEFAULT '11',
  `etag` varchar(64) NOT NULL DEFAULT '',
  `last_check` int(10) unsigned NOT NULL DEFAULT 0,
  `data` longtext NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `version` (`version`),
  KEY `version_etag_idx` (`version`,`etag`)
) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=COMPRESSED;
/*!40101 SET character_set_client = @saved_cs_client */;

I’m confused. Are you saying the original error is gone?

The original error suggested your dump has ALTER commands in it (which is weird unless you’re not really using mysqldump or you’re specifying some non-standard options). Are there any ALTER commands in your .sql file?

The sql file is full of ALTER (>4700).
Maybe something wrong in my export?
here is my batch:

 mysqldump --single-transaction --default-character-set=utf8mb4 --lock-tables -ubackupusr -pmypassword nextcloud | gzip > /usr/local/backups/db_backup/nextcloud_db_$(date +\%Y-\%m-\%d).sql.gz

I have also tried documented command, or import/export from phpmyadmin without success.

Thank you

Which export approach are you trying to debug at the moment?

I suggest:

  • use the one documented in the Nc manual for the moment to make a backup
  • use the one documented in the Nc manual for the moment to do a restore

What happens?

Two other things to note:

  • It does not make sense to specify --lock-tables with InnoDB tables that are being dumped via --single-transaction.
  • The ALTER commands are usually from phpmyadmin because it doesn’t an actual `mysqldump’; it uses its own approach so they export will not be equivalent. Also varies a fair bit depending PMA version and options toggled on/off (and there have been several bugs in this area in old versions).

I have started proginal db optimization:

MariaDB [nextcloud]> select table_name,
    -> round(data_length/1024/1024) as data_length_mb,
    -> round(data_free/1024/1024) as data_free_mb
    ->  from information_schema.tables
    ->  where round(data_free/1024/1024) > 500
    ->  order by data_free_mb;
+-------------------+----------------+--------------+
| table_name        | data_length_mb | data_free_mb |
+-------------------+----------------+--------------+
| oc_files_metadata |            491 |          736 |
| oc_filecache      |           1035 |         1520 |
+-------------------+----------------+--------------+

I think after this something should go better…

It quits always on oc_whats_new table :pensive: