php - 为什么 Doctrine SQLite 会忽略身份验证配置?
问题描述
似乎在 SQLite Doctrine 中设置用户名和密码config/packages/doctrine.yaml
不会创建受用户名/密码保护的 sqlite 数据库。
doctrine:
dbal:
charset: UTF8
url: '%DATABASE_URL%'
user: 'foo'
password: 'bar'
似乎参数用户名和密码被忽略了?
解决方案
在 Doctrine 的文档中,您会发现:
对于连接 SQLite 数据库,URL 的权限部分显然是无关紧要的,因此可以省略。URL 的路径部分与所有其他驱动程序一样,去掉了前导斜杠,从而产生数据库的相对文件名:
sqlite:///somedb.sqlite
这将访问当前工作目录中的 somedb.sqlite 并且与以下内容相同:
sqlite://ignored:ignored@ignored:1234/somedb.sqlite
但事实是,sqlite 可能直接忽略了用户名和密码,而不是 Doctrine。
如果你检查Doctrine\DBAL\Driver\PDOSqlite\Driver::connect()
,你会发现参数被传递给了 PDO。
但是除非你编译你安装的 sqlite 来添加身份验证支持,否则它对用户和密码参数没有任何用处,并且会被愉快地忽略。
对经过身份验证的用户使用 sqlite 很少是一个好主意。如果您的用例需要它们,您可能最好使用传统的数据库服务器。
推荐阅读
- python - 如何正确使用 Python 从 xmsd2 读取 .h5 文件?
- kubernetes - 无法使用 Helm 安装入口合并
- mysql - 如何使用 MySQL OUTER JOIN 单独分组的表
- azure-pipelines - 使用管道自动创建 Azure VM 的最佳方法是什么?
- python - 如何使用烧瓶(表格、饼图等)在页面上获取多个元素
- powershell - Get-ADObject:解析查询时出错 不支持:-neq'?
- mysql - 如何获取组的最新记录
- javascript - 内联网格 kendoComboBox 在 javascript 中获取值
- javascript - Pilcrow (¶) 或偏微分 (∂) 字符的正则表达式模式
- spring-boot - 使用 Heroku Maven 插件部署 Spring Boot 应用程序