Skip to content

Commit

Permalink
Fix Charset passed via URL is overridden (#1363)
Browse files Browse the repository at this point in the history
  • Loading branch information
saleh199 authored Jun 1, 2021
1 parent 7f472cc commit aa17a6c
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
14 changes: 8 additions & 6 deletions ConnectionFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,16 @@ public function createConnection(array $params, ?Configuration $config = null, ?
$params['dbname'] .= $params['dbname_suffix'];
}

if ($driver instanceof AbstractMySQLDriver) {
$params['charset'] = 'utf8mb4';
if (! isset($params['charset'])) {
if ($driver instanceof AbstractMySQLDriver) {
$params['charset'] = 'utf8mb4';

if (! isset($params['defaultTableOptions']['collate'])) {
$params['defaultTableOptions']['collate'] = 'utf8mb4_unicode_ci';
if (! isset($params['defaultTableOptions']['collate'])) {
$params['defaultTableOptions']['collate'] = 'utf8mb4_unicode_ci';
}
} else {
$params['charset'] = 'utf8';
}
} else {
$params['charset'] = 'utf8';
}

if ($wrapperClass !== null) {
Expand Down
7 changes: 7 additions & 0 deletions Tests/ConnectionFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,13 @@ public function testConnectionOverrideOptions(): void
$this->assertEquals($params, array_intersect_key($connection->getParams(), $params));
}

public function testConnectionCharsetFromUrl()
{
$connection = (new ConnectionFactory([]))->createConnection(['url' => 'mysql://root:password@database:3306/main?charset=utf8mb4_unicode_ci']);

$this->assertEquals('utf8mb4_unicode_ci', $connection->getParams()['charset']);
}

public function testDbnameSuffix(): void
{
$connection = (new ConnectionFactory([]))->createConnection([
Expand Down

0 comments on commit aa17a6c

Please sign in to comment.