找不到命令cim。 Drush无法查询数据库

时间:2019-04-15 07:49:41

标签: php drupal drupal-8 drush

在Drupal 8中运行drush cim命令时,出现以下错误:

Command cim was not found. Drush was unable to query the database. As a result, many commands are unavailable. 
Re-run your command with --debug to see relevant log messages.

,当我运行drush cim --debug时,显示以下内容:

$ drush cim --debug
 [preflight] Redispatch to site-local Drush: C:\xampp\htdocs\executive-coatings\docroot/vendor/drush/drush/drush.
 [preflight] Config paths: C:/xampp/htdocs/executive-coatings/docroot/vendor/drush/drush/drush.yml
 [preflight] Alias paths: C:/xampp/htdocs/executive-coatings/docroot/drush/sites,C:/xampp/htdocs/executive-coatings/drush/sites,C:/xampp/htdocs/executive-coatings/docroot/drush/sites
 [preflight] Commandfile search paths: C:\xampp\htdocs\executive-coatings\docroot\vendor\drush\drush\src
 [debug] Bootstrap further to find cim [0.27 sec, 6.78 MB]
 [debug] Trying to bootstrap as far as we can [0.27 sec, 6.78 MB]
 [bootstrap] Drush bootstrap phase: bootstrapDrupalRoot() [0.27 sec, 6.78 MB]
 [bootstrap] Change working directory to C:\xampp\htdocs\executive-coatings\docroot [0.27 sec, 6.78 MB]
 [bootstrap] Initialized Drupal 8.6.13 root directory at C:\xampp\htdocs\executive-coatings\docroot [0.28 sec, 6.9 MB]
 [bootstrap] Drush bootstrap phase: bootstrapDrupalSite() [0.28 sec, 7.15 MB]
 [bootstrap] Initialized Drupal site default at sites/default [0.29 sec, 7.37 MB]
 [debug] Could not find a Drupal settings.php file at sites/default/settings.php. [0.29 sec, 7.37 MB]
 [bootstrap] Drush bootstrap phase: bootstrapDrupalConfiguration() [0.29 sec, 7.37 MB]
 [debug] Add service modifier [0.29 sec, 7.51 MB]
 [bootstrap] Unable to connect to database. More information may be available by running `drush status`. This may occur when Drush is trying to bootstrap a site that has not been installed or does not have a configured database. In this case you can select another site with a working database setup by specifying the URI to use with the --uri parameter on the command line. See `drush topic docs-aliases` for details. [0.29 sec, 7.51 MB]
 [debug] Bootstrap phase bootstrapDrupalDatabase() failed to validate; continuing at bootstrapDrupalConfiguration() [0.29 sec, 7.51 MB]
 [debug] Done with bootstrap max in Application::find(): trying to find cim again. [0.29 sec, 7.51 MB]

In Application.php line 239:

  [Symfony\Component\Console\Exception\CommandNotFoundException]
  Command cim was not found. Drush was unable to query the database. As a result, many commands are unavailable. Re-r
  un your command with --debug to see relevant log messages.


Exception trace:
 () at C:\xampp\htdocs\executive-coatings\docroot\vendor\drush\drush\src\Application.php:239
 Drush\Application->bootstrapAndFind() at C:\xampp\htdocs\executive-coatings\docroot\vendor\drush\drush\src\Application.php:192
 Drush\Application->find() at C:\xampp\htdocs\executive-coatings\docroot\vendor\symfony\console\Application.php:236
 Symfony\Component\Console\Application->doRun() at C:\xampp\htdocs\executive-coatings\docroot\vendor\symfony\console\Application.php:148
 Symfony\Component\Console\Application->run() at C:\xampp\htdocs\executive-coatings\docroot\vendor\drush\drush\src\Runtime\Runtime.php:118
 Drush\Runtime\Runtime->doRun() at C:\xampp\htdocs\executive-coatings\docroot\vendor\drush\drush\src\Runtime\Runtime.php:49
 Drush\Runtime\Runtime->run() at C:\xampp\htdocs\executive-coatings\docroot\vendor\drush\drush\drush.php:72
 require() at C:\xampp\htdocs\executive-coatings\docroot\vendor\drush\drush\drush:4

3 个答案:

答案 0 :(得分:1)

请先运行此命令drush config-import,然后再运行drush cim命令。

有关更多信息,请参考此链接here 我希望它能解决您的问题。

答案 1 :(得分:0)

就我而言,我只是没有启动虚拟服务器(沼泽)。

答案 2 :(得分:0)

出于开发原因,您可能(像我一样)试图将所有已导出的配置从某个现有站点(从此处称为example.com)导入到本地(localhost/PROJECT_NAME)中,但这目前不直接支持(2019年中),您必须首先导入数据库,有关更多信息,请参见下文。

步骤:

  1. 从现有站点(例如example.com/admin/config/development/backup_migrate)导出并下载数据库。
  2. 在您本地,确保有足够的RAM(也许关闭某些程序)。
  3. 创建您的本地数据库(DATABASE_NAME),然后使用PhpMyAdmin(或类似的名称,例如http://localhost/phpmyadmin/)导入以前导出的数据库。
  4. 确保settings.local.php文件存在(在./sites/default/settings目录中),当不存在时创建并配置它,例如:
<?php
$databases['default']['default'] = [
  'database' => 'DATABASE_NAME',
  'username' => 'root',
  'password' => '',
  'prefix' => '',
  // 'collation' => 'utf8mb4_general_ci',
  'host' => '127.0.0.1',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
];

$settings['drupal_env'] = 'dev';
// Location of the site configuration files:
//  (Path used by "drush config-export" command)
# $config_directories['sync'] = '../config/d8_sync';
  1. 确保settings.php文件存在(在./sites/default目录中),并且包括上面提到的settings.local.php文件(将附加我的默认settings.php文件)。
  2. 转到localhost/PROJECT_NAME/core/install.php?rewrite=ok&langcode=en&profile=standard&continue=1链接(仅确保它显示Drupal已安装)。
  3. 运行drush cr(现在应该可以运行并清除缓存)。

settings.php文件:

这是我的默认settings.php文件,其中应包含settings.local.php(如果存在)。

// Salt for one-time login links, cancel links, form tokens, etc:
$settings['hash_salt'] = 'Dxl656Ddme9FyAvn0y02nrnbETVxVnHZwBLilbjSkQLH0-DHqQd2BZL8yPoM0lRCNKRx7_yqVA';

// Deployment identifier:
# $settings['deployment_identifier'] = \Drupal::VERSION;

// Access control for update.php script:
$settings['update_free_access'] = FALSE;

// External access proxy settings:
# $settings['http_client_config']['proxy']['http'] = 'http://proxy_user:proxy_pass@example.com:8080';
# $settings['http_client_config']['proxy']['https'] = 'http://proxy_user:proxy_pass@example.com:8080';
# $settings['http_client_config']['proxy']['no'] = ['127.0.0.1', 'localhost'];

// Reverse Proxy Configuration:
# $settings['reverse_proxy'] = TRUE;

/**
 * Specify every reverse proxy IP address in your environment.
 * This setting is required if $settings['reverse_proxy'] is TRUE.
 */
# $settings['reverse_proxy_addresses'] = ['a.b.c.d', ...];

// Reverse proxy trusted headers:
# $settings['reverse_proxy_trusted_headers'] = \Symfony\Component\HttpFoundation\Request::HEADER_X_FORWARDED_ALL | \Symfony\Component\HttpFoundation\Request::HEADER_FORWARDED;

// Page caching:
# $settings['omit_vary_cookie'] = TRUE;

// Cache TTL for client error (4xx) responses:
# $settings['cache_ttl_4xx'] = 3600;

// Expiration of cached forms:
# $settings['form_cache_expiration'] = 21600;

// Class Loader:
# $settings['class_loader_auto_detect'] = FALSE;

// Authorized file system operations:
# $settings['allow_authorize_operations'] = FALSE;

/**
 * Default mode for directories and files written by Drupal.
 *
 * Value should be in PHP Octal Notation, with leading zero.
 */
# $settings['file_chmod_directory'] = 0775;
# $settings['file_chmod_file'] = 0664;

// Public file base URL:
# $settings['file_public_base_url'] = 'http://downloads.example.com/files';

// Public file path:
# $settings['file_public_path'] = 'sites/default/files';

// Private file path:
# $settings['file_private_path'] = '';

// Session write interval:
# $settings['session_write_interval'] = 180;

// String overrides:
# $settings['locale_custom_strings_en'][''] = [
#   'forum'      => 'Discussion board',
#   '@count min' => '@count minutes',
# ];

// A custom theme for the offline page:
# $settings['maintenance_theme'] = 'bartik';

/**
 * If you encounter a situation where users post a large amount of text, and
 * the result is stripped out upon viewing but can still be edited, Drupal's
 * output filter may not have sufficient memory to process it.  If you
 * experience this issue, you may wish to uncomment the following two lines
 * and increase the limits of these variables.  For more information, see
 * http://php.net/manual/pcre.configuration.php.
 */
# ini_set('pcre.backtrack_limit', 200000);
# ini_set('pcre.recursion_limit', 200000);

// Active configuration settings:
# $settings['bootstrap_config_storage'] = ['Drupal\Core\Config\BootstrapConfigStorageFactory', 'getFileStorage'];

// Configuration overrides:
# $config['system.file']['path']['temporary'] = '/tmp';
# $config['system.site']['name'] = 'My Drupal site';
# $config['system.theme']['default'] = 'stark';
# $config['user.settings']['anonymous'] = 'Visitor';

// Fast 404 pages:
# $config['system.performance']['fast_404']['exclude_paths'] = '/\/(?:styles)|(?:system\/files)\//';
# $config['system.performance']['fast_404']['paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i';
# $config['system.performance']['fast_404']['html'] = '<!DOCTYPE html><html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL "@path" was not found on this server.</p></body></html>';

// Load services definition file:
$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml';

// Override the default service container class:
# $settings['container_base_class'] = '\Drupal\Core\DependencyInjection\Container';

// Override the default yaml parser class:
# $settings['yaml_parser_class'] = NULL;

// The default list of directories that will be ignored by Drupal's file API:
$settings['file_scan_ignore_directories'] = [
  'node_modules',
  'bower_components',
];

// The default number of entities to update in a batch process:
$settings['entity_update_batch_size'] = 50;

// Entity update backup:
$settings['entity_update_backup'] = TRUE;


/**
 * Load local development override configuration, if available.
 *
 * Use settings.local.php to override variables on secondary (staging,
 * development, etc) installations of this site. Typically used to disable
 * caching, JavaScript/CSS compression, re-routing of outgoing emails, and
 * other things that should not happen on development and testing sites.
 *
 * Keep this code block at the end of this file to take full effect.
 */

if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
  include $app_root . '/' . $site_path . '/settings.local.php';
}