php - Laravel - 动态读取 SQLite 文件

标签 php sqlite laravel laravel-5 laravel-5.1

我正在尝试开发一个通过上传接受 SQLite 文件、保存它并解析 SQLite 数据库中的数据的项目。我发现当我使用较小的数据库文件时,不会创建“-wal”和“-shm”文件,但当使用较大的数据库(至少 2mb)时,它们会创建。

这是我正在使用的代码:

$destination = storage_path().'/tempDir/databases/'.$userId.'/';

//store the file in the directory
$request->file('database')->move($destination .'database/database.db');

$destination = $destination.'database/database.db';
Config::set('database.connections.sqlite.database', $dbLocation);
$sqliteDbConnection = \DB::connection('sqlite');
$getUsers = $sqliteDbConnection->table("users")->get();

每当我尝试执行此操作时,都会收到以下错误: “SQLSTATE[HY000]:一般错误:10 磁盘 I/O 错误(SQL:从\“用户\”中选择 *)”

有人知道为什么会这样吗?我可以确认保存到服务器的文件信誉良好,我可以使用其他 SQLite 查看器打开它。

更新:Homestead 和我的 MAC 之间的链接是否可能禁止 Laravel 访问该文件?

UPDATE2:问题100%出在VirtualBox和计算机之间的共享机制上。我通过 XAMPP 尝试过,效果很好。搞什么?

最佳答案

这就是我如何通过自定义 PDO 连接获取 Builder 实例:

$pathname = '/absolute/path/to.sqlite';

$connection = new \Illuminate\Database\SQLiteConnection(new \PDO('sqlite:' . $pathname));

$builder = new \Illuminate\Database\Query\Builder($connection);

$builder->newQuery()->from('my_table')->get()->all();

关于php - Laravel - 动态读取 SQLite 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36448064/

相关文章:

php - 在 iPad 上运行原生 PHP 网站

java - Android 将字符串保存到数据库

c++ - 使用 OMIT 选项从 MVC 2013 编译 cl.exe 时出现 sqlite3 错误

angularjs - Laravel - 使用 AngularJS 访问关系模型

php - 无法获取 Laravel 数据透视表中的关系

php - laravel从另一个表获取用户信息问题

php - 如何从PHP中的路径找到图像的扩展名?

java - 我应该在 Solr(或任何数据库)中索引或存储这些字段吗?

python - 如何为 python 脚本更新数据库编写 makefile?

php - Laravel 5.3 Blade foreach 循环 : show data in loop from two different database eloquent queries