我正在使用 Symfony 4 + Flex 开始一个新项目。此时我正在尝试将我的新应用程序连接到 MySQL 数据库。
我正在关注Symfony 文档,并且已经添加doctrine
到我的依赖项中:
composer require doctrine
composer require maker --dev
Run Code Online (Sandbox Code Playgroud)
然后我在DATABASE_URL
里面定义的环境变量中添加了数据库连接信息,.env
如下所示:
###> doctrine/doctrine-bundle ###
DATABASE_URL=mysql://myUser:myPasswordWithSpecialChars@127.0.0.1:3306/myDbName
###< doctrine/doctrine-bundle ###
Run Code Online (Sandbox Code Playgroud)
在这一点上,我面临一个问题:
数据库异常
格式错误的参数“url”。
我认为这是由于我的 MySQL 密码使用了一些特殊字符造成的。文档正在谈论它:
如果用户名、密码或数据库名称包含在 URI 中被视为特殊的任何字符(例如 !、@、$、#),则必须对它们进行编码。有关保留字符的完整列表,请参阅 RFC 3986,或使用 urlencode 函数对其进行编码。
我真的不明白如何或在哪里使用urlencode函数,因为该.env
文件不是 PHP 文件(如doctrine.yaml
)。
是否有人已经使用该urlencode
函数对包含特殊字符的 MySQL 密码进行编码?
谢谢。
编辑
这是我的doctrine.yaml
文件:
parameters:
# Adds a fallback DATABASE_URL if the env var is not set.
# …
Run Code Online (Sandbox Code Playgroud) 我正在学习 Symfony 3,想知道创建迁移然后根据数据库迁移中已更改的模式重新生成实体的最佳方法是什么。
目前,我所做的是:安装此捆绑包:
"doctrine/doctrine-migrations-bundle": "^1.0"
Run Code Online (Sandbox Code Playgroud)
doctrine.orm.yml
更改了我的文件中的字段
在windows命令行中,我写道:
php bin/console doctrine:migrations:diff
Run Code Online (Sandbox Code Playgroud)
然后
php bin/console doctrine:migrations:migrate
Run Code Online (Sandbox Code Playgroud)
这成功创建了一个迁移,其中包含一个名为“migration-versions”的新表和一个同名的新实体。
我现在的问题是,已更改的实体仍然具有旧数据,我希望新的迁移来更新此特定实体,但我被困住了。
我要手动删除它并在命令行中输入吗?
php bin/console doctrine:generate:entities AppBundle
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助。