Php 如何在symfony 5中使用mysql代替mariadb

Php 如何在symfony 5中使用mysql代替mariadb,php,mysql,symfony,mariadb,Php,Mysql,Symfony,Mariadb,我想这对某些人来说可能是个愚蠢的问题,但我发誓我自己找不到答案 我还在学Symfony,所以请友善一点 实际上,我已经在.env文件中设置了对数据库的访问权限: [...] DATABASE_URL=mysql://root:db_password@127.0.0.1:3308/db_name [...] 然后我在config/doctor.yaml中定义了环境变量: doctrine: dbal: default_connection: default con

我想这对某些人来说可能是个愚蠢的问题,但我发誓我自己找不到答案

我还在学Symfony,所以请友善一点

实际上,我已经在.env文件中设置了对数据库的访问权限:

[...]
DATABASE_URL=mysql://root:db_password@127.0.0.1:3308/db_name
[...]
然后我在config/doctor.yaml中定义了环境变量:

doctrine:
    dbal:
      default_connection: default
      connections:
        default:
          dbname:           Symfony
          user:             root
          password:         null
          host:             localhost
          server_version:   '8.0'
          driver: pdo_mysql
          charset: UTF8
因此,我运行以下命令:

> php bin/console doctrine:database:create
netstat -tlnp | grep mysql
但“Symfony”数据库是在mariadb下创建的

:(我不明白为什么,因为我已经明确定义我使用的是8.0版本,而这个版本不是mariadb版本

我也尝试过这个:

# .symfony/services.yaml
mydatabase:
    # supported versions: 5.7, 8.0
    type: oracle-mysql:8.0
    disk: 1024
尽管如此,但它仍然不起作用。 我收到以下错误消息,因为mydatabase不是symfony服务:

C:\Users\vincp\Symfony\charming_tuto>php bin/console doctrine:database:create

In FileLoader.php line 173:

  There is no extension able to load the configuration for "mydatabase" (in "C:\Users\vincp\Symfony\charming_tuto\con
  fig/services.yaml"). Looked for namespace "mydatabase", found ""framework", "sensio_framework_extra", "twig", "twig
  _extra", "web_profiler", "monolog", "debug", "webpack_encore", "doctrine", "doctrine_migrations", "maker"" in C:\Us
  ers\vincp\Symfony\charming_tuto\config/services.yaml (which is being imported from "C:\Users\vincp\Symfony\charming
  _tuto\src\Kernel.php").
我想使用mysql,因为这是我通常使用的DBMS。
(如果你认为我应该使用mariadb而不是mysql,我对此持开放态度,但请给我一些参数。我真的会参与进来)

也许这是服务器问题。因此,首先,确保除了mariadb之外,您的服务器上还运行着mysql(如何运行取决于您使用的服务器类型)

如果是,则可能是端口设置问题:我看到您将数据库端口设置为3308。这可能是MariaDB正在侦听的端口。请尝试确定服务器上是否有另一个db正在侦听另一个端口(例如3306通常是默认的MySQL端口)。为此,可以在Linux服务器上尝试以下命令:

> php bin/console doctrine:database:create
netstat -tlnp | grep mysql

如果您只找到
x.x.x.x:3308左右的地址,我打赌MySQL没有在您的服务器上运行,您只运行一个MariaDB实例。但是如果您在其他端口上找到地址(例如
x.x.x.x:3306
)有可能是一个MySQL实例正在运行并侦听另一个端口。如果是这种情况,那么您应该相应地更改.env文件中的
数据库URL

env db string对我来说很好,至少在原则上。yaml对我来说似乎不需要太多东西,我也不使用该服务。yamlIf它将数据写入您的MariaDB instance、 然后可能会混淆配置。您可以使用
bin/console debug:container--env vars
检查
.env
是否以某种方式被覆盖。您可能还需要检查
bin/console debug:config-doctor-dbal
以双重检查配置是否使用env vars或某些固定参数,例如数据库ase或服务器名称。在你的应用程序中,你也可以使用web探查器检查使用了哪个db连接。好的!我忘记设置端口了。谢谢@dbrumann the
bin/console debug:config-doctor-dbal
帮了我大忙