开放的编程资料库

当前位置:我爱分享网 > PHP教程 > 正文

Sqlite 版本不匹配

我最近在测试一个站点时遇到了一个问题,其中PDO_SQLITE声称它无法读取我的PDO数据库文件。我最近所做的唯一更改是我安装了新版本的PHP,因此安装了新版本的PDO_SQLITE。搜索网络(我们不应该说谷歌搜索google,记住;-)),我发现问题是编译到我的PHP安装中的sqlite版本与我最初用于创建数据库的版本不兼容.不要介意它们只是一个或两个不同的微版本。

因此,我遇到了一个难题:我需要创建与我的PDO_SQLITE安装兼容的文件,但我的CLIsqlite工具不兼容。如果我使用PDO_SQLITE创建数据库文件,我会丢失我的数据,对吗?

错了。如果您有时发现自己处于同样的情况,您可以采取以下措施。

修复取决于三件事:

  • PDO_SQLITE将创建数据库文件(如果它不存在)。
  • Sqlite具有转储所有SQL以生成和填充数据库中现有表的工具文件。
  • PHP_Shell允许您在命令行与PHP交互。

所以,开始吧。首先,创建现有文件的SQL转储。sqlite命令接受两个参数:要使用的数据库文件,以及SQL或sqlite元命令。在这种情况下,我们将传递命令.dump(注意.前缀),并将输出重定向到文件:

$ sqlite mydata.db .dump > /tmp/mydata.sql

现在,我们需要删除现有的数据库文件,或者将其备份到某处。完成后,我们将启动PHP_Shell,使用php-shell.sh命令(或php-shell.bat对于Windows用户)。PHP_Shell是一个方便的实用程序,它提供了一个交互式PHPshell,包括历史和完成。我们将使用它来创建我们的sqlite数据库文件:

% phpshell 
PHP-Shell - Version 0.3.0, with readline() support
(c) 2006, Jan Kneschke 

>> use '?' to open the inline help 

>> $db = new PDO('sqlite:/path/to/mydata.db');
PDO::__set_state(array(
))
>> quit

创建数据库文件后,我们现在将加载我们之前转储的模式和数据。这里的好处是sqlite实用程序往往更能容忍版本差异,因此我们可以使用它将数据加载到新的数据库文件中,而PHP不会更明智:

$ sqlite mydata.db < /tmp/mydata.sql

全部完成!

未经允许不得转载:我爱分享网 » Sqlite 版本不匹配

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏