【问题标题】:How to use mysql instead of mariadb in symfony 5如何在 symfony 5 中使用 mysql 而不是 mariadb
【发布时间】:2020-06-30 10:29:38
【问题描述】:

我认为这对某些人来说可能是一个愚蠢的问题,但我发誓我自己无法找到答案。

我还在学习 Symfony,所以请善待。

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

[...]
DATABASE_URL=mysql://root:db_password@127.0.0.1:3308/db_name
[...]

然后我在 config/doctrine.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

但是'Symfony'数据库已经在mariadb下创建了。

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

我也试过这个:

# .symfony/services.yaml
mydatabase:
    # supported versions: 5.7, 8.0
    type: oracle-mysql:8.0
    disk: 1024

作为symfony documentation saying to do,但它仍然无法正常工作。 我收到以下错误消息,因为 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,我对此持开放态度,但请给我一些论据。我真的很感兴趣)

【问题讨论】:

  • ENV db 字符串对我来说看起来不错,在教义.yaml 对我来说似乎不需要什么东西,我也不使用 service.yaml
  • 如果它将数据写入您的 MariaDB 实例,那么配置可能会混淆。您可以使用bin/console debug:container --env-vars 检查您的.env 是否以某种方式被覆盖。您可能还想检查bin/console debug:config doctrine dbal 以仔细检查配置是否使用环境变量或某些固定参数,例如数据库或服务器名称。在您的应用中,您还可以使用网络分析器来检查使用了哪个数据库连接。
  • 好的!我忘了设置端口。谢谢@dbrumann bin/console debug:config doctrine dbal 帮了我很多

标签: php mysql symfony mariadb


【解决方案1】:

可能是服务器问题。因此,首先,确保 MySQL 正在您的服务器上运行,而不是 MariaDB(如何操作取决于您使用的服务器类型)。

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

netstat -tlnp | grep mysql

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-24
    • 2016-06-26
    • 2018-11-20
    • 2022-01-03
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多