Как я могу подключиться через Symfony 4 к базе данных mySQL, созданной с помощью MAMP?

Я создал базу данных в MAMP под названием «проект».

В моем файле .env я добавил эту строку:

DATABASE_URL=mysql://root:root@localhost:3306/project

Теперь я хочу бежать

php bin/console doctrine:database:create

Но я получаю сообщение об ошибке:

SQLSTATE[HY000] [2002] No such file or directory

мои конфигурации доктрины:

parameters:
    # Adds a fallback DATABASE_URL if the env var is not set.
    # This allows you to run cache:warmup even if your
    # environment variables are not available yet.
    # You should not need to change this value.
    env(DATABASE_URL): ''

doctrine:
    dbal:
        # configure these for your database server
        driver: 'pdo_mysql'
        server_version: '5.7'
        charset: utf8mb4
        default_table_options:
            charset: utf8mb4
            collate: utf8mb4_unicode_ci

        url: '%env(resolve:DATABASE_URL)%'
    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        mappings:
            App:
                is_bundle: false
                type: annotation
                dir: '%kernel.project_dir%/src/Entity'
                prefix: 'App\Entity'
                alias: App

Подскажите пожалуйста конфигурацию доктрины?

Alessandro Minoccheri 18.06.2018 12:43

@AlessandroMinoccheri Где мне это найти?

peace_love 18.06.2018 12:44

ты про config/packages/doctrine.yaml?

peace_love 18.06.2018 12:44

да, именно, пожалуйста, добавьте это

Alessandro Minoccheri 18.06.2018 12:45

@AlessandroMinoccheri Добавил

peace_love 18.06.2018 12:46
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
3
5
13 490
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Попробуйте это изменить:

url: '%env(resolve:DATABASE_URL)%'

к этому:

url: '%env(DATABASE_URL)%'
Ответ принят как подходящий

Решено!

в файле "config / packages / doctrine.yaml" мне пришлось добавить эту строчку

unix_socket: /Applications/MAMP/tmp/mysql/mysql.sock

Это означает изменить это:

 dbal:
        # configure these for your database server
        driver: 'pdo_mysql'
        server_version: '5.7'
        charset: utf8mb4
        default_table_options:
            charset: utf8mb4
            collate: utf8mb4_unicode_ci

        url: '%env(resolve:DATABASE_URL)%'

в

 dbal:
        # configure these for your database server
        driver: 'pdo_mysql'
        server_version: '5.7'
        charset: utf8mb4
        unix_socket: /Applications/MAMP/tmp/mysql/mysql.sock
        default_table_options:
            charset: utf8mb4
            collate: utf8mb4_unicode_ci

        url: '%env(resolve:DATABASE_URL)%'

Я могу дать вам некоторую предысторию вашей ошибки: если вы используете localhost, это имеет особое значение, и mysql-client lib пытается подключиться через сокет. поскольку ваш сокет не находится в одном из местоположений по умолчанию, вы должны указать dbal точное местоположение. Вы также можете изменить localhost на 127.0.0.1, чтобы принудительно установить TCP-соединение, которое не будет использовать сокет.

Rufinus 18.06.2018 14:22

@Rufinus Я привязался к использованию 127.0.0.1 вместо localhost, но потом я получил ошибку "Connection failed"

peace_love 18.06.2018 14:24

Вы также можете поместить параметр unix_socket в DATABASE_URL вашего файла среды, например. .env.local: DATABASE_URL=mysql://root:root@localhost:3306/dbname?unix_so‌​cket=/Applications/M‌​AMP/tmp/mysql/mysql.‌​sock

thi3rry 03.10.2020 07:17

Что вы также можете попробовать, так это явно установить сервер mysql

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                dbname:         local_api
                user:           root
                password:       null
                host:           localhost
                driver:         pdo_mysql
                server_version: '5.5' # in case you are using mysql 5.5

Получил такую ​​же проблему. Добавлен unix_socket и изменен 127.0.0.1 на localhost, работающий на MAMP 5.5.

doctrine.yaml

doctrine:
dbal:
    # configure these for your database server
    driver: 'pdo_mysql'
    server_version: '5.7'
    charset: utf8mb4
    unix_socket: /Applications/MAMP/tmp/mysql/mysql.sock
    default_table_options:
        charset: utf8mb4
        collate: utf8mb4_unicode_ci

    url: '%env(resolve:DATABASE_URL)%'

.env

DATABASE_URL=mysql://root:root@localhost:3306/mydb

Другие вопросы по теме