Php 如何在symfony 5中使用mysql代替mariadb
我想这对某些人来说可能是个愚蠢的问题,但我发誓我自己找不到答案 我还在学Symfony,所以请友善一点 实际上,我已经在.env文件中设置了对数据库的访问权限: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
[...]
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 thebin/console debug:config-doctor-dbal
帮了我大忙