Пример #1
0
 /**
  * Connects to the database if needed.
  *
  * @return  void  Returns void if the database connected successfully.
  *
  * @since   12.1
  * @throws  RuntimeException
  */
 public function connect()
 {
     if ($this->connection) {
         return;
     }
     parent::connect();
     $this->setDateFormat($this->dateformat);
 }
Пример #2
0
 /**
  * Connects to the database if needed.
  *
  * @return  void  Returns void if the database connected successfully.
  *
  * @since   12.1
  * @throws  RuntimeException
  */
 public function connect()
 {
     if ($this->connection) {
         return;
     }
     parent::connect();
     if (isset($this->options['schema'])) {
         $this->setQuery('ALTER SESSION SET CURRENT_SCHEMA = ' . $this->quoteName($this->options['schema']))->execute();
     }
     $this->setDateFormat($this->dateformat);
 }
Пример #3
0
 /**
  * Connects to the database if needed.
  *
  * @return  void  Returns void if the database connected successfully.
  *
  * @since   3.4
  * @throws  RuntimeException
  */
 public function connect()
 {
     if ($this->connection) {
         return;
     }
     try {
         // Try to connect to MySQL
         parent::connect();
     } catch (\RuntimeException $e) {
         // If the connection failed, but not because of the wrong character set, then bubble up the exception.
         if (!$this->utf8mb4) {
             throw $e;
         }
         /*
          * Otherwise, try connecting again without using
          * utf8mb4 and see if maybe that was the problem. If the
          * connection succeeds, then we will have learned that the
          * client end of the connection does not support utf8mb4.
          */
         $this->utf8mb4 = false;
         $this->options['charset'] = 'utf8';
         parent::connect();
     }
     if ($this->utf8mb4) {
         /*
          * At this point we know the client supports utf8mb4.  Now
          * we must check if the server supports utf8mb4 as well.
          */
         $serverVersion = $this->connection->getAttribute(PDO::ATTR_SERVER_VERSION);
         $this->utf8mb4 = version_compare($serverVersion, '5.5.3', '>=');
         if (!$this->utf8mb4) {
             // Reconnect with the utf8 character set.
             parent::disconnect();
             $this->options['charset'] = 'utf8';
             parent::connect();
         }
     }
     $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $this->connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
     // Set sql_mode to non_strict mode
     $this->connection->query("SET @@SESSION.sql_mode = '';");
 }
Пример #4
0
 /**
  * Connects to the database if needed.
  *
  * @return  void  Returns void if the database connected successfully.
  *
  * @since   3.4
  * @throws  RuntimeException
  */
 public function connect()
 {
     parent::connect();
     $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $this->connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
 }
Пример #5
0
 /**
  * Connects to the database if needed.
  *
  * @return  void  Returns void if the database connected successfully.
  *
  * @since   3.4
  * @throws  RuntimeException
  */
 public function connect()
 {
     try {
         // Try to connect to MySQL
         parent::connect();
     } catch (\RuntimeException $e) {
         // If the connection failed but not because of the wrong character set bubble up the exception
         if (!$this->utf8mb4 || $this->options['charset'] != 'utf8mb4') {
             throw $e;
         }
         /**
          * If the connection failed and I was trying to use the utf8mb4 charset then it is likely that the server
          * doesn't support utf8mb4 despite claiming otherwise.
          *
          * This happens on old MySQL server versions (less than 5.5.3) using the mysqlnd PHP driver. Since mysqlnd
          * masks the server version and reports only its own we can not be sure if the server actually does support
          * UTF-8 Multibyte (i.e. it's MySQL 5.5.3 or later). Since the utf8mb4 charset is undefined in this case we
          * catch the error and determine that utf8mb4 is not supported!
          */
         $this->utf8mb4 = false;
         $this->options['charset'] = 'utf8';
         parent::connect();
     }
     $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $this->connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
 }