似乎在SQLite Doctrine config/packages/doctrine.yaml
中设置用户名和密码不会创建受用户名/密码保护的sqlite数据库。
doctrine:
dbal:
charset: UTF8
url: '%DATABASE_URL%'
user: 'foo'
password: 'bar'
似乎参数用户名和密码被忽略了吗?
最佳答案
在Doctrine的docs中,您会发现:
对于连接到SQLite数据库,URL的权限部分显然无关紧要,因此可以省略。与所有其他驱动程序一样,URL的路径部分被去除其前导斜杠,从而导致数据库的相对文件名:sqlite:///somedb.sqlite
这将访问当前工作目录中的somedb.sqlite,并且与以下内容相同:sqlite://ignored:ignored@ignored:1234/somedb.sqlite
但事实是,sqlite可能会直接忽略用户名和密码,而不是Doctrine。
如果选中Doctrine\DBAL\Driver\PDOSqlite\Driver::connect()
,则会找到the parameters are passed to PDO。
但是,除非you compiled your installed sqlite to add authentication support,否则它将对用户和密码参数没有任何作用,并且会被愉快地忽略。
与经过身份验证的用户一起使用sqlite很少是一个好主意。并且如果您的用例需要它们,则最好与传统的数据库服务器一起使用。
关于php - 为什么Doctrine SQLite忽略身份验证配置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57933804/