Соединение с базой данных не работает при входе в приложение Symfony 3.4 - PullRequest
0 голосов
/ 12 ноября 2018

Я развернул веб-сайт Symfony в веб-приложении Azure MySQL + PHP, и он был развернут, но я столкнулся с этой ошибкой:

The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar

Итак, я завернул пользователя и пароль БД в цитате, но теперь, когда я пытаюсь войти на свой сайт, я сталкиваюсь с этой ошибкой:

php_network_getaddresses: getaddrinfo failed: No such host is known.

Кажется, что соединение с БД не работает, и всякий раз, когда код выполняет запрос, он разрывается. Я также попытался выполнить простой запрос mysqli и успешно получил результат.

Моя версия Symfony - 3.4.

Версия PHP - 7.2

Версия MySQL 5.1

КОД:

Parameters.yml

    parameters:
        database_host: '`db_host`'
        database_port: null
        database_name: db_name
        database_user: '`db_user`'
        database_password: '`my_db_password`'
        mailer_transport: smtp
        mailer_host: 127.0.0.1
        mailer_user: null
        mailer_password: null
        secret: b379ec1bf07cf3925582e96b26ffe5ad0052aff8

config.yml

    doctrine:
    dbal:
        server_version: 5.1
        driver: pdo_mysql
        host: '%database_host%'
        port: '%database_port%'
        dbname: '%database_name%'
        user: '%database_user%'
        password: '%database_password%'
        charset: UTF8
        types:
            json: Sonata\Doctrine\Types\JsonType

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Исправлено путем добавления конфигурации базы данных на основе URL в моем файле config.yml, как показано ниже.

    doctrine:
        dbal:
            server_version: 5.1
            driver: mysqli
            host: '%database_host%'
            port: '%database_port%'
            dbname: '%database_name%'
            user: '%database_user%'
            password: '%database_password%'
            # if the url option is specified, it will override the above config
            url: pdo-mysql://db_user:db_password@127.0.0.1:3306/db_name

Ссылки: Ссылка 1 Ссылка 2

0 голосов
/ 13 ноября 2018

Согласно вашей информации об ошибке The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar, она была вызвана символом @, который является зарезервированным индикатором в YAML 1.2.Пожалуйста, обратитесь к официальной спецификации YAML , чтобы узнать его через поиск @ в браузере.Более подробная информация об использовании Symfony YAML (3.4) для анализа файла YAML приведена в Формат YAML на официальном сайте Symfony, а ниже приведена краткая справка.

Строки, содержащие любой из следующих символов, должны быть заключены в кавычки.Хотя вы можете использовать двойные кавычки, для этих символов удобнее использовать одинарные кавычки, что исключает необходимость экранирования от обратной косой черты:

:, {,}, [,], ,, &, *, #,?, |, -, <,>, =,!,%, @ , `

Стиль в двойных кавычках обеспечивает способ выражения произвольных строк с помощью \ для выходаперсонажи и последовательности.Например, это очень полезно, когда вам нужно вставить в строку символ \ n или Unicode.

В вашем описании я не вижу никаких @ в вашем коде, поэтомучто я не могу предоставить какой-либо код, чтобы помочь исправить ошибку.Но я воспроизвожу информацию об ошибке через простой код и надеюсь, что она поможет.

<?php
include_once('vendor/autoload.php');
use Symfony\Component\Yaml\Yaml;
$value = Yaml::parse("hello: @world");
printf($value);
?>

Первый символ @ из hello вызывает ту же ошибку.Возможно, такая же проблема произошла, когда вы ссылаетесь на переменную в Config.yml.Если вы можете обновить свой код для более недостающих деталей, полезно помочь исправить.

Любая проблема, пожалуйста, дайте мне знать.

...