Symfony2无法连接到sqlite

时间:2017-03-27 10:29:25

标签: php mysql sqlite symfony behat

我试图在symfony2中的behat测试中使用sqlite base。就我而言,symfony2中的behat找到了我的基础,并且可以在其中创建固定装置。问题是我的测试站点无法连接到此基站。

这是我的config_test.yml

doctrine:
    dbal:
        driver:   pdo_sqlite
        host:     127.0.0.1
        dbname:   "%database_name%_test"
        path:     tests/eg_test.db

这是我的config.yml

doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8

这是我的behat.yml

default:
    suites:
        default:
            paths:
                features: '%paths.base%/features'
                bootstrap:  '%paths.base%/features/bootstrap'
            contexts:
                - FeatureContext: ~
                - EwidencjaContext:
                    userManager: '@fos_user.user_manager'
                    em: '@doctrine.orm.entity_manager'
                    packageManager: '@em.package_manager'
    extensions:
        Behat\Symfony2Extension: ~
        Behat\MinkExtension:
            base_url:  http://nginx/app_test.php
            goutte: ~
            selenium2:
                browser: "chrome"
                wd_host: http://selenium_chrome:4444/wd/hub
                capabilities: { "browserName": "chrome", "browser": "chrome"}
        Bex\Behat\ScreenshotExtension:
            image_drivers:
                local:
                    screenshot_directory: tests/features/images/
                    clear_screenshot_directory: true

这是我尝试登录我的网站后回来的日志。用户是否存在并不重要。所以它不是错误的密码错误或类似的东西。看起来像网站只是没有连接到基地。

  

[2017-03-27 10:22:09] request.INFO:匹配路线" fos_user_security_check"。 {"路线":" fos_user_security_check"" route_parameters" {" _controller":" FOS \ UserBundle \控制器\ SecurityController: :checkAction"" _route":" fos_user_security_check"}" REQUEST_URI":" upsert"&# 34;方法":" POST"} []   [2017-03-27 10:22:10] security.INFO:身份验证请求失败。 {" exception":" [object](Symfony \ Component \ Security \ Core \ Exception \ AuthenticationServiceException(code:0):驱动程序中发生异常:SQLSTATE [HY000] [14]无法在/var/www/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Provider/DaoAuthenticationProvider.php:94,Doctrine \ DBAL \ Exception \ ConnectionException(代码:0)中打开数据库文件:异常在驱动程序中出现:SQLSTATE [HY000] [14]无法在/var/www/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractSQLiteDriver.php:82,Distrine \ DBAL \ Driver \ PDOException打开数据库文件(代码:14):SQLSTATE [HY000] [14]无法在/var/www/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:47,PDOException(代码:14)打开数据库文件: SQLSTATE [HY000] [14]无法在/var/www/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43)"} []打开数据库文件   [2017-03-27 10:22:10] security.DEBUG:身份验证失败,重定向触发。 {" failure_path":" / login"} []   [2017-03-27 10:22:10] request.INFO:匹配路由" fos_user_security_login"。 {"路线":" fos_user_security_login"" route_parameters" {" _controller":" FOS \ UserBundle \控制器\ SecurityController: :在loginAction"" _route":" fos_user_security_login"}" REQUEST_URI":" http://localhost/app_test.php/login_check"&# 34;方法":" GET"} []   [2017-03-27 10:22:10] security.INFO:使用匿名令牌填充TokenStorage。 [] []

当我尝试从浏览器登录时,这是我在我的网站上出现的错误:

  

由于系统问题,无法处理身份验证请求。

当我尝试注册新用户时出错:

  

驱动程序中发生异常:SQLSTATE [HY000] [14]无法打开数据库文件

我使用on prod创建了我的sqlite数据库,接近标准的mysql base im。之后我使用了bin/console doctrine:schema:update --force --env=test。我的数据库获得了良好的文件模式(-rwxrwxr-x),并由正确的用户和组使用。

2 个答案:

答案 0 :(得分:3)

将config_test.yml更改为:

doctrine:
    dbal:
        connections:
            default:
                driver: pdo_sqlite
                path: %kernel.cache_dir%/default.db
                charset: UTF8

然后在此处显示正确的权限:Setting up or Fixing File Permissions您将根据您的操作系统运行第二个或第三个命令。

答案 1 :(得分:0)

如果你转到你的parameters.yml文件,你应该看到路径,如下所示:database_path: '%kernel.project_dir%/var/data/data.sqlite',另一个建议:在/var中创建一个目录并将你的data.sqlite文件放入它

希望有所帮助:)