0

助けてください。私はまた、以下のコードを与えました。非常に多くのことを試しました。機能していません。

Spatialite データベースを選択しました:

     $db = new SQLite3('db2.sqlite');

これらの負荷拡張機能を試しました:

// $db->loadExtension('C:\PHP\ext\libspatialite-2.dll');
//   $db->loadExtension('libspatialite-4.dll');
//   $db->exec("SELECT InitSpatialMetadata()");

拡張機能の読み込みが無効になっている場合に備えて、この機能も試しました:

// $db->exec("sqlite3_enable_load_extension(1)");
//   $tvalue=$db->loadExtension('C:\\PHP\\sqliteext\\libspatialite-4.dll');

ここで負荷拡張を試しました:

    $db->exec("SELECT load_extension('C:\\PHP\\sqliteext\\libspatialite-4.dll')");
    phpinfo();
    $result = $db->query("SELECT load_extension('libspatialite-4.dll')");


    var_dump($result->fetchArray());

このクエリを試しました:

    $result = $db->query('select astext(geometry) from roads');
    var_dump($result->fetchArray());

    $rs = $db->query('SELECT spatialite_version()');
4

1 に答える 1

1

最も一般的な問題の 1 つは、sqlite を含む「融合」ビルドであるバージョンの libspatialite を使用することです。含まれている sqlite のバージョンが libspatialite のロードに使用しているバージョンと一致しない場合、これは問題になります (特に 64 ビット Windows では)。ABI が異なる 2 つのバージョン = クラッシュ。

良い解決策はありませんが、これを回避するためにできることがあります: 1. 融合ビルドを使用しないでください。 2. sqlite の 2 つのバージョンが同じであることを確認してください。

于 2012-06-29T23:58:56.237 に答える