protected Tasks::connect()
Check if we can connect to the database.
Overrides Tasks::connect
File
- core/lib/Drupal/Core/Database/Driver/sqlite/Install/Tasks.php, line 54
Class
- Tasks
- Specifies installation tasks for SQLite databases.
Namespace
Drupal\Core\Database\Driver\sqlite\Install
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | protected function connect() { try { // This doesn't actually test the connection. db_set_active(); // Now actually do a check. Database::getConnection(); $this ->pass( 'Drupal can CONNECT to the database ok.' ); } catch (\Exception $e ) { // Attempt to create the database if it is not found. if ( $e ->getCode() == Connection::DATABASE_NOT_FOUND) { // Remove the database string from connection info. $connection_info = Database::getConnectionInfo(); $database = $connection_info [ 'default' ][ 'database' ]; // We cannot use file_directory_temp() here because we haven't yet // successfully connected to the database. $connection_info [ 'default' ][ 'database' ] = drupal_tempnam(sys_get_temp_dir(), 'sqlite' ); // In order to change the Database::$databaseInfo array, need to remove // the active connection, then re-add it with the new info. Database::removeConnection( 'default' ); Database::addConnectionInfo( 'default' , 'default' , $connection_info [ 'default' ]); try { Database::getConnection()->createDatabase( $database ); Database::closeConnection(); // Now, restore the database config. Database::removeConnection( 'default' ); $connection_info [ 'default' ][ 'database' ] = $database ; Database::addConnectionInfo( 'default' , 'default' , $connection_info [ 'default' ]); // Check the database connection. Database::getConnection(); $this ->pass( 'Drupal can CONNECT to the database ok.' ); } catch (DatabaseNotFoundException $e ) { // Still no dice; probably a permission issue. Raise the error to the // installer. $this ->fail(t( 'Database %database not found. The server reports the following message when attempting to create the database: %error.' , array ( '%database' => $database , '%error' => $e ->getMessage()))); } } else { // Database connection failed for some other reason than the database // not existing. $this ->fail(t( 'Failed to connect to your database server. The server reports the following message: %error.<ul><li>Is the database server running?</li><li>Does the database exist, and have you entered the correct database name?</li><li>Have you entered the correct username and password?</li><li>Have you entered the correct database hostname?</li></ul>' , array ( '%error' => $e ->getMessage()))); return FALSE; } } return TRUE; } |
Please login to continue.