似乎在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/

10-11 23:19
查看更多