我可以使用内存数据库启动我的Laravel服务器吗?
我可以使用内存迁移数据库并启动服务器吗 My/config/database.php我可以使用内存数据库启动我的Laravel服务器吗?,laravel,sqlite,laravel-artisan,Laravel,Sqlite,Laravel Artisan,我可以使用内存迁移数据库并启动服务器吗 My/config/database.php 'sqlite' => array( 'driver' => 'sqlite', 'database' => ':memory:', // fail // 'database' => 'database', // success 'prefix' => '', 'charset' => 'utf8mb4', 'collatio
'sqlite' => array(
'driver' => 'sqlite',
'database' => ':memory:', // fail
// 'database' => 'database', // success
'prefix' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
),
然后移动桌子,开始拉拉维尔服务
$ php artisan migrate:refresh
$ php artisan serve
我使用driver=sqlite+database=database每个工作都很好
我使用driver=sqlite+database=:memory,错误消息来自127:0.0.1,表示尚未创建数据库表。我认为这是不可能的,因为migrate命令将打开一个数据库连接,然后SERVICE将有一个或多个新连接 数据库连接一断开,数据库就不再存在 关闭Every:memory:database与其他数据库不同。所以 打开两个数据库连接,每个连接的文件名为“:memory:” 将创建两个独立的内存中数据库
我认为这是不可能的,因为migrate命令将打开一个数据库连接,然后serve将有一个或多个新连接 数据库连接一断开,数据库就不再存在 关闭Every:memory:database与其他数据库不同。所以 打开两个数据库连接,每个连接的文件名为“:memory:” 将创建两个独立的内存中数据库
我想知道为什么单元测试可以使用driver=sqlite+database=:memory,但我的web服务器无法使用您的单元测试,所有单元测试都在同一个进程上运行,使用相同的数据库连接,因此php artisan服务无法接收由上一个命令创建的内存数据库?根据链接,如果单独的连接处于同一进程中,则它们只能共享内存中的数据库。由于
migrate
是一个过程,而service
是另一个过程,我不相信这能起作用。我想知道为什么单元测试可以使用driver=sqlite+database=:memory,但我的web服务器不能使用您的单元测试在同一个过程上运行,使用php artisan服务的相同数据库连接无法接收由上一个命令创建的内存数据库?根据链接,如果单独的连接处于同一进程中,则它们只能共享内存中的数据库。既然migrate
是一个过程,而service
是另一个过程,我认为这是行不通的,为什么要这样做?顾名思义,这些数据库存在于内存中。一旦迁移过程完成,内存中的数据库就会被破坏。因为我有API服务器和WWW服务器,我想用内存数据库启动我的API服务器,然后我可以从WWW到API服务器进行浏览器测试(HTTP请求)。这样我就可以按住Ctrl+C键停止API服务器,而无需在API数据库中保存任何内容。只需使用SQlite数据库即可。在启动服务器时迁移它,并在停止服务器后删除它。为什么要这样做?顾名思义,这些数据库存在于内存中。一旦迁移过程完成,内存中的数据库就会被破坏。因为我有API服务器和WWW服务器,我想用内存数据库启动我的API服务器,然后我可以从WWW到API服务器进行浏览器测试(HTTP请求)。这样我就可以按住Ctrl+C键停止API服务器,而无需在API数据库中保存任何内容。只需使用SQlite数据库即可。启动服务器时将其迁移,并在停止服务器后将其删除。