Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeception-将数据库指向MAMP MySQL服务器_Php_Mysql_Macos_Codeception - Fatal编程技术网

Php Codeception-将数据库指向MAMP MySQL服务器

Php Codeception-将数据库指向MAMP MySQL服务器,php,mysql,macos,codeception,Php,Mysql,Macos,Codeception,有没有办法将codeception中用于功能测试的DB模块指向MAMP MySQL服务器而不是内置服务器 class_name: TestGuy modules: enabled: [Db, Filesystem, TestHelper] config: Db: dsn: 'mysql:host=localhost;dbname=testdb' user: 'root'

有没有办法将codeception中用于功能测试的DB模块指向MAMP MySQL服务器而不是内置服务器

class_name: TestGuy
    modules:
        enabled: [Db, Filesystem, TestHelper]
        config:
          Db:
             dsn: 'mysql:host=localhost;dbname=testdb'
             user: 'root'
             password: 'root'
             dump: 'tests/_data/dump.sql'
             populate: true
             cleanup: false

你试过这个吗-可能对你也有用

class_name: TestGuy
modules:
enabled: [Filesystem, TestHelper, WebHelper, PhpBrowser]
config:
    PhpBrowser:
        url: 'http://localhost/yourapp/'
        curl:
             CURL_RETURNTRANSFER: true
让我知道这对你是如何起作用的:)


我会仔细检查转储中的mysql表

安装完成后,只需将类似的内容添加到测试中

$I->seeInDatabase('users', array('name' => 'Davert', 'email' => 'davert@mail.com'));

这将检查“用户”表,并查找数组中提供的带有名称和电子邮件的行-适用于我。

两件事-我相信可以解决您的问题

  • 确保为其设置数据库参数的模块相同DB不同于DB
  • MAMP在端口8889上运行MySQL。如果您仅在
    dsn
    字符串中指定
    localhost
    ,Codeception将尝试连接到在端口3306上运行的MySQL实例,该端口是MySQL的默认端口。将
    localhost
    更改为
    localhost:8889
  • 我只是自己解决了这个问题。如有必要,请提供进一步澄清意见

    干杯

    编辑

    最近,我再次访问了我使用Codeception的项目。这个解决方案对我不起作用。我遇到了两个问题

  • 时区异常
    您可以通过。。。
    • 确保在
      php.ini
      文件中正确设置时区,该文件通常位于
      /Applications/MAMP/bin/php/php5.x/conf/
    • 和/或使用别名
      php
      通过执行
      alias phpm=“/Applications/MAMP/bin/php5.x/bin/php”
  • [Codeception\Exception\Module](数据库中的异常)
    这主要是因为模块的配置。我从配置中删除了端口号,一切似乎都正常

  • Codeception使用PDO连接到数据库。它将把“dsn”字符串直接传递到PDO构造函数中。因此,根据,为了连接到运行在端口8889上的MAMP MySQL服务器,您的配置应如下所示:

    class_name: TestGuy
        modules:
            enabled: [Db, Filesystem, TestHelper]
            config:
              Db:
                 dsn: 'mysql:host=localhost;port=8889;dbname=testdb'
                 user: 'root'
                 password: 'root'
                 dump: 'tests/_data/dump.sql'
                 populate: true
                 cleanup: false
    

    这就是我解决问题的方法。 在MAMP中,我将在“允许网络访问MySQL”框中设置罚单

    codeception.yml中的dsn设置为:
    dsn:'mysql:host=127.0.0.1;端口=3306;dbname=la51'

    但这是如何指向MySQL服务器的?问题是,测试尝试访问我的内置服务器,因此我无法在MAMPYeah上测试我的数据库。我知道如何测试数据进入-我只是不知道如何将其指向我的MAMP数据库,而不是内置MySQL服务器。我可能会查看Google Group。。可能有一些CodeCeption组可以帮助您。谢谢,似乎有道理,它会让您知道这总是返回一个“未知的MySQL服务器主机'localhost:8889'”@AshleyBanks
    8889
    是my MAMP的MySQL服务器运行的端口。如果您的端口未在8889上运行,则此错误就足够了。在
    首选项->端口中检查MAMP端口,并相应地设置端口。谢天谢地,这对我不起作用了。“你找到解决办法了吗,@AshleyBanks?”?