{"record":{"id":"d773e46bb78216d4","repo":"wpscanteam/wpscan","slug":"missing-enterprise-database-dump-s-files-join","errorCode":null,"errorMessage":"Missing enterprise database dump(s): #{files.join(', ')}. Run without --no-update so they can be downloaded from enterprise-data.wpscan.org, and check that your --enterprise-db-token is valid.","messagePattern":"Missing enterprise database dump\\(s\\): #(.+?)\\. Run without --no-update so they can be downloaded from enterprise-data\\.wpscan\\.org, and check that your --enterprise-db-token is valid\\.","errorType":"exception","errorClass":"WPScan::Error::MissingEnterpriseDatabaseFile","httpStatus":null,"severity":"error","filePath":"app/controllers/vuln_api.rb","lineNumber":94,"sourceCode":"\n      # @return [ String, nil ] The enterprise DB token (CLI or ENV)\n      def enterprise_db_token\n        self.class.enterprise_db_token\n      end\n\n      # @return [ String, nil ] The API token (CLI or ENV var)\n      def api_token\n        self.class.api_token\n      end\n\n      # Switches DB::VulnApi to local-dump mode and ensures the dumps are present. Core's DB\n      # update normally downloads them before this controller runs (VulnApi is chained after Core).\n      def setup_enterprise_db\n        DB::VulnApi.local_db = true\n\n        missing = DB::VulnApi::ENTERPRISE_DB_FILES.values.reject { |file| File.exist?(DB_DIR.join(file)) }\n\n        raise Error::MissingEnterpriseDatabaseFile, missing unless missing.empty?\n      end\n    end\n  end\nend\n","sourceCodeStart":76,"sourceCodeEnd":99,"githubUrl":"https://github.com/wpscanteam/wpscan/blob/62c9cef471de90095f6b42245a11d0f8172d19c9/app/controllers/vuln_api.rb#L76-L99","documentation":"Raised by VulnApi#setup_enterprise_db (app/controllers/vuln_api.rb:94) when --enterprise-db-token (or WPSCAN_ENTERPRISE_DB_TOKEN) selects local-dump mode but some files listed in DB::VulnApi::ENTERPRISE_DB_FILES are absent from DB_DIR. Core's DB update normally downloads the dumps from enterprise-data.wpscan.org before the VulnApi controller runs, so missing files mean that update was skipped or failed.","triggerScenarios":"Running with --enterprise-db-token and --no-update before any successful enterprise download; a previous update that failed (invalid token rejected by the download endpoint, network error); a wiped or relocated cache directory; chaining VulnApi without Core's update step.","commonSituations":"CI images caching the DB but built without the enterprise token; --no-update habits carried over from API-token workflows; expired/invalid enterprise token causing failed downloads; disk-full preventing the (large) dumps from being written.","solutions":["Re-run without --no-update (or run wpscan --update --enterprise-db-token TOKEN) so the dumps are downloaded","Verify the enterprise token is valid — an invalid token fails the download and leaves the files missing","Check DB_DIR is writable with enough free space, then retry the update"],"exampleFix":"# before\nwpscan --url http://t --enterprise-db-token TOK --no-update\n# => Missing enterprise database dump(s): ...\n\n# after\nwpscan --url http://t --enterprise-db-token TOK","handlingStrategy":"validation","validationCode":"# Verify all enterprise dumps exist before scanning\nmissing = WPScan::DB::VulnApi::ENTERPRISE_DB_FILES.values.reject { |f| File.exist?(WPScan::DB_DIR.join(f)) }\nsystem('wpscan', '--update', \"--enterprise-db-token=#{token}\") unless missing.empty?","typeGuard":null,"tryCatchPattern":"begin\n  scan.run\nrescue WPScan::Error::MissingEnterpriseDatabaseFile => e\n  run_update; retry # ensure e.files is empty before retrying\nend","preventionTips":["Run the DB update in the CI image build with the enterprise token present","Never pair --enterprise-db-token with --no-update unless dumps are verified cached","Treat failed enterprise downloads as fatal, not skippable","Monitor DB_DIR free space — the enterprise dumps are large"],"tags":["enterprise","database","download","update","cache"],"backgroundTag":"missing-required-files","analyzedSha":"62c9cef471de90095f6b42245a11d0f8172d19c9","analyzedAt":"2026-08-21T17:10:47.902Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}