MySQL charset = utf8mb4 не работает (docker, laravel) - PullRequest
1 голос
/ 27 марта 2020

Я хочу иметь две базы данных в моем mysql контейнере (pimcore и product_info), обе charset = utf8mb4. Но когда я запускаю это, у pimcore есть кодировка latin1 и collation latin1_swedish_ci, которая абсолютно случайна. Но для другой базы данных product_info я получаю правильную кодировку (utf8mb4). Я не уверен, в чем здесь проблема.

Это мой созданный файл. sql, который запускается изначально

CREATE DATABASE IF NOT EXISTS pimcore charset=utf8mb4;
CREATE DATABASE IF NOT EXISTS product_info charset=utf8mb4;

CREATE USER IF NOT EXISTS 'dbuser'@'%' IDENTIFIED BY 'pwd';
GRANT ALL PRIVILEGES ON pimcore.* TO 'dbuser'@'%' IDENTIFIED BY 'pwd';
GRANT ALL PRIVILEGES ON prodcut_info.* TO 'dbuser'@'%' IDENTIFIED BY 'pwd';

docker -составить файл:

mysql:
    image: mysql:5.7.22
    container_name: mysql
    restart: always
    tty: true
    ports:
      - "13306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: pwd
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: pwd
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    volumes:
      - ./:/var/www
      - dbdata:/var/lib/mysql/
      - ./mysql/my.cnf:/etc/mysql/my.cnf
      - ./mysql/init:/docker-entrypoint-initdb.d
    networks:
      - network

.env file:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=13306
DB_DATABASE=pimcore
DB_USERNAME=dbuser
DB_PASSWORD=pwd

DB_CONNECTION_SECOND=mysql2
DB_DATABASE_SECOND=product_info

и моя база данных. php file

'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

        'mysql2' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE_SECOND', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],
...