php - SQLite不支持drop; Laravel单元测试使用什么

标签 php sqlite unit-testing laravel

因此,似乎SQLite不支持dropping column。在构建应用程序的过程中,我删除/重新添加了列。我将数据库更改为。因此,现在,在我的迁移文件夹中,有一些使用$table->dropColumn('someColumn')的文件夹。当我使用SQLite时,该行出现错误(上面的链接中对此进行了解释)。

这告诉我不能使用SQLite。所以我决定使用MySQL:

<?php

return [

    'fetch' => PDO::FETCH_CLASS,

    'default' => 'mysql',

    'connections' => [
        'mysql' => [
            'driver'   => 'mysql',
            'database' => ':memory:',
            'prefix'   => '',
        ]
    ]

];


但我收到一个错误:PDOException: SQLSTATE[HY000] [2002] No such file or directory

我应该使用什么连接进行单元测试?

最佳答案

MySQL没有像SQLite这样的内存功能,因此'database' => ':memory:'不起作用(将mysql服务器实例启动到write specifically in memory之前)。只需在app/config/testing/database.php中设置测试数据库配置:

'mysql' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'test_database',
    'username'  => '*******',
    'password'  => '*******',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
)


并在setUp上运行迁移,然后在tearDown上重置迁移。

关于php - SQLite不支持drop; Laravel单元测试使用什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27348302/

相关文章:

c# - 在 C# 中测试/注入(inject)私有(private)字段的最佳做法是什么

reactjs - 具有持久本地数据库的渐进式 Web 应用程序

java - 如何模拟正在测试的同一个类中的另一个方法?

c# - 改进模拟代表

php - CakePHP 2.0 - virtualFields 不用于带选项的查找操作

python - SQLite3 Python : How to do an efficient bulk update?

javascript - HTML5/js sqlite数据库不进入交易功能

PHP For 循环与 Mysqli 的问题

php - 使用Php mysql查询不从php类获取数据,尽管有数据

php - 每次加载页面时,使用新值更新存储在 cookie 中的数组