繁体   English   中英

登录Symfony 3.4应用程序时数据库连接不起作用

[英]Database connection not working while logging in to Symfony 3.4 app

我已经在Azure MySQL + PHP Web应用程序上部署了Symfony网站,并且已经部署了该网站,但是我遇到了以下错误:

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

配置文件

    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

根据您的错误信息The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar ,它是由字符@引起的,该字符是YAML 1.2中的保留指示符。 请通过浏览器中的搜索@来参考YAML官方规范文档 有关使用Symfony YAML(3.4)解析YAML文件的更多注释详细信息,请参阅Symfony官方网站上的YAML格式 ,以下是此处的简短参考。

包含以下任何字符的字符串都必须加引号。 尽管您可以使用双引号,但是对于这些字符,使用单引号更为方便,这样可以避免转义任何反斜杠:

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

双引号样式通过使用\\来转义字符和序列,提供了一种表达任意字符串的方法。 例如,当您需要在字符串中嵌入\\ n或Unicode字符时,它非常有用。

在您的描述中,我在您的代码中看不到任何@ ,因此,我无法提供任何代码来帮助修复错误。 但是我通过一个简单的代码重现了错误信息,希望对您有所帮助。

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

hello的第一个字符@引起相同的错误。 也许,当您在Config.yml引用变量时, Config.yml发生相同的问题。 如果您可以更新代码以获取更多缺失的详细信息,则有助于修复问题。

如有任何疑问,请随时告诉我。

通过在我的config.yml文件中添加基于URL的数据库配置来解决此问题,如下所示。

    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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM