【发布时间】:2016-07-26 16:12:14
【问题描述】:
我正在尝试处理一个通过上传接受 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: select * from \"users\")"
有人知道为什么会这样吗?我可以确认保存到服务器的文件信誉良好,我可以用其他 SQLite 查看器打开它。
更新:Homestead 和我的 MAC 之间的链接是否有可能禁止 Laravel 访问该文件?
UPDATE2:问题100%出在VirtualBox与电脑的共享机制上。我通过 XAMPP 尝试了这个,它工作正常。什么鬼?
【问题讨论】:
-
我会选择 PDO 而不是尝试将数据库传递给 laravel:
$db = new PDO('sqlite:' . $destination); -
好的,那我如何访问数据库中的信息呢?
-
谢谢。当我尝试实现您的示例时,prepare() 方法返回 false。知道为什么会这样吗?
-
捕获并检查错误:pastebin.com/8q8Azrh9
标签: php sqlite laravel laravel-5 laravel-5.1