Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
我可以使用内存数据库启动我的Laravel服务器吗?_Laravel_Sqlite_Laravel Artisan - Fatal编程技术网

我可以使用内存数据库启动我的Laravel服务器吗?

我可以使用内存数据库启动我的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

我可以使用内存迁移数据库并启动服务器吗

My/config/database.php

'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数据库即可。启动服务器时将其迁移,并在停止服务器后将其删除。