"Unable to open database file" 尝试在 Symfony 中加载 Doctrine Data Fixtures 时出错
"Unable to open database file" error when trying to load Doctrine Data Fixtures in Symfony
我将 pdo_mysql
用于 prod、stag 和 dev 环境,将 pdo_sqlite
用于测试环境。问题是加载 Doctrine Data Fixtures 会产生 unable to open database file
错误,如下所示。我分配了缓存文件夹的权限,如 symfony website 中定义的,也尝试使用 777,但没有成功。
我在 MAC OS Yosemite 并且在 PHP.
中启用了 sqlite3
PDO drivers mysql, sqlite, dblib, pgsql
SQLite3 module version 0.7-dev
SQLite Library 3.8.8.3
此命令创建数据库成功:
MBP:football bc$ php app/console doctrine:schema:update --force --env=test
Updating database schema...
Database schema updated successfully! "9" queries were executed
此命令失败:
MBP:football bc$ php app/console doctrine:fixtures:load --no-interaction --no-debug --env=test
[PDOException]
SQLSTATE[HY000] [14] unable to open database file
config_test.yml(两种配置都不起作用)
doctrine:
dbal:
driver: pdo_sqlite
path: %kernel.cache_dir%/default.db
charset: UTF8
#doctrine:
# dbal:
# default_connection: default
#
# connections:
# default:
# driver: pdo_sqlite
# path: %kernel.cache_dir%/default.db
# charset: utf8
config.yml
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
orm:
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
更新:
Settings/steps 以上在 Ubuntu 中工作正常所以这是一个 MAC OS 相关的问题。 Mac 用户,知道为什么吗?
我遇到了同样的问题并通过为数据库文件创建父目录解决了这个问题:
database_path: %kernel.root_dir%/data/data.db3
,所以我创建了 'data' 目录。而且,当然,确保所有文件夹都是 Doctrine 可写的。希望对您有所帮助!
如 Symfony website 中所建议,如果您 运行 遇到某种权限问题,Mac 用户应通过 [=22] 使用对 app/cache
文件夹的特定权限=]宁命令如下:
HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`
$ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
实际上这就是导致问题的原因所以解决这个问题运行:
rm -Rf app/cache/test/*
并且不向 cache/test
文件夹分配任何权限。
我将 pdo_mysql
用于 prod、stag 和 dev 环境,将 pdo_sqlite
用于测试环境。问题是加载 Doctrine Data Fixtures 会产生 unable to open database file
错误,如下所示。我分配了缓存文件夹的权限,如 symfony website 中定义的,也尝试使用 777,但没有成功。
我在 MAC OS Yosemite 并且在 PHP.
中启用了 sqlite3PDO drivers mysql, sqlite, dblib, pgsql
SQLite3 module version 0.7-dev
SQLite Library 3.8.8.3
此命令创建数据库成功:
MBP:football bc$ php app/console doctrine:schema:update --force --env=test
Updating database schema...
Database schema updated successfully! "9" queries were executed
此命令失败:
MBP:football bc$ php app/console doctrine:fixtures:load --no-interaction --no-debug --env=test
[PDOException]
SQLSTATE[HY000] [14] unable to open database file
config_test.yml(两种配置都不起作用)
doctrine:
dbal:
driver: pdo_sqlite
path: %kernel.cache_dir%/default.db
charset: UTF8
#doctrine:
# dbal:
# default_connection: default
#
# connections:
# default:
# driver: pdo_sqlite
# path: %kernel.cache_dir%/default.db
# charset: utf8
config.yml
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
orm:
auto_generate_proxy_classes: "%kernel.debug%"
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
更新:
Settings/steps 以上在 Ubuntu 中工作正常所以这是一个 MAC OS 相关的问题。 Mac 用户,知道为什么吗?
我遇到了同样的问题并通过为数据库文件创建父目录解决了这个问题:
database_path: %kernel.root_dir%/data/data.db3
,所以我创建了 'data' 目录。而且,当然,确保所有文件夹都是 Doctrine 可写的。希望对您有所帮助!
如 Symfony website 中所建议,如果您 运行 遇到某种权限问题,Mac 用户应通过 [=22] 使用对 app/cache
文件夹的特定权限=]宁命令如下:
HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`
$ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
实际上这就是导致问题的原因所以解决这个问题运行:
rm -Rf app/cache/test/*
并且不向 cache/test
文件夹分配任何权限。