質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

2回答

3332閲覧

2015年当時稼働していたデータベースSQliteを使ったWordPressがsyntaxエラーが出て復旧できない

creator.M

総合スコア80

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

1クリップ

投稿2021/11/30 19:46

編集2021/12/07 05:53

古いWordPressをフォルダごとダウンロードされています。
データベースが使えないサーバーだったのえ、SQliteを使って動いていたWordPressのサイトです。
データベースのファイルの日付を確認したところ、2015年でした。

このサイトをXサーバーで運用できるように復旧したいのですが、データベースを読み込みできず困っています。

Sqliteを使ってWordPressは、起動できました。

でも、手元にあるデータベースを読み込むことができず、記事を復旧できないのです。

このエラーが出ます。

Fatal error: in /home/hoge/wp2/wp-content/plugins/sqlite-integration/pdoengine.class.php on line 251

PHPは、7.4.25です。
PHPのバージョンを下げようとしましたが、エラーで出来ませんでした。

プラグインのsqlite-integrationを削除すると、WordPressの起動出来ます。

プラグインのところで、ドロップインを見てみたら、ちゃんとデータベースは、ありました。
このファイルを今ままで使っていたファイルに、入れ替えできたら良いのですが。

単純にファイルの上書きを行っても、できませんでした。

こちらの記事を読んで、SQliteマネージャーを知りました。
https://allabout.co.jp/gm/gc/47422/

サーバーアップロードしましたが、エラーになりました。
Deprecated: Non-static method sqlite::getDbVersion() should not be called statically in /hoge/SQLiteManager-1.2.4/include/SQLiteAutoConnect.class.php on line 12

データベースは、あります。
データベースのフォルダ

##解決の方針
一番望む解決状態は、WordPressのテーマなど外見は、どうでも良いです。
過去に投稿された記事を WordPressで表示できること、編集できるようにできることです。

でも、これまで私が試した中で、PHPのバージョンが上がってしまっているため、低いバージョンのPHPが使えるサーバーでないと、復旧できないのかなと推測しています。

そのためデータベースから内容をエクスポートすることができたら、助かります。
データをエクスポートする方法を、ご教授頂けましたら幸いです。
そして、今のバージョンのPHPで動いているWordPressに、データをインポートして使うことができたらと思っています。

##代替え案
こちらのソフトを使い今回のデータベースが、生きていることを確認できました。
https://jp.navicat.com/
SQL形式でデータベースを保存できましたので、サーバーのデータベースにインポートして、記事の復元を目指しています。

##DB Browser for SQLiteを試しました。
添付した画像のように、syntaxエラーが出ました。
イメージ説明
##SQliteのインポートで、エラーが出ています。

SQL

1sqlite> .read ./database/.ht.sqlite 2Error: near line 1: in prepare, near "SQLite": syntax error (1) 3Error: near line 228: in prepare, near "";s:7:"": syntax error (1) 4Error: near line 298: in prepare, near "";s:7:"": syntax error (1) 5Error: near line 802: in prepare, near "RewriteEngine": syntax error (1) 6Error: near line 1019: in prepare, near "return": syntax error (1) 7Error: near line 1020: in prepare, unrecognized token: "}" (1) 8Error: near line 1022: in prepare, near "$args": syntax error (1) 9Error: near line 1026: in prepare, near "$my_limi": syntax error (1) 10Error: near line 1027: in prepare, near "?": syntax error (1) 11Error: near line 1029: in prepare, near "&": syntax error (1) 12Error: near line 1031: in prepare, near "&": syntax error (1) 13Error: near line 1033: in prepare, near "&": syntax error (1) 14Error: near line 1034: in prepare, near "&": syntax error (1) 15Error: near line 1035: in prepare, near "&": syntax error (1) 16Error: near line 1040: in prepare, near "&": syntax error (1) 17Error: near line 1064: in prepare, near "&": syntax error (1) 18Error: near line 1065: in prepare, near "&": syntax error (1) 19Error: near line 1221: in prepare, near "/": syntax error (1) 20Error: near line 1223: in prepare, near "/": syntax error (1) 21Error: near line 1225: in prepare, unrecognized token: "}" (1) 22sqlite>

Navicast15 でSQLで保存したものをインポートした時も、同じエラーが出ました。
エラーの内容をネット検索して調べている段階ですので、まだ進展がないです。

##XAMPPで復旧を試みたところエラーが出る

ダウンロードされたWordPressのファイルをXAMPPのフォルダに入れて、起動しました。
インストールの画面が表示され必要な項目を入力して進めましたが、エラーになりました。

Error occured while creating tables or indexes...
Query was: array ( 0 => 'CREATE INDEX IF NOT EXISTS user_login_key ON wp_users(user_login)', 1 => 'CREATE INDEX IF NOT EXISTS user_nicename ON wp_users(user_nicename)', )
Error message is: malformed database schema (wp_blc_filters) - near "�V": syntax error

データベースが破損しているように思われるので、修復方法をご教授頂けましたら幸いです。
XAMPPは、PHP5.6です。

##コマンドラインで修復を試みましたが、同じ文字でエラーです。

bush

1.ht.sqlite .dump | sqlite3 .ht_new.sqlite 2Error: near line 76: near "�V": syntax error

ひょっとしたらデータベースの文字コードが、違うのでしょうか?
でも、Navicast15で表示したら、投稿された記事を読むことができました。
SQlite3とSQLite2は、違うそうですが・・・
今回2015年に稼働していた WordPressなので、SQlite2の方ではないでしょうか?
SQlite3で修復や読み込みができたら良いのですが、引き続きご教授して頂けましたら幸いです。

Navicast15でクリエとして表示すると、このようになります。
イメージ説明
エラーの71行目は、BSとSOHになっています。
この様子では、文字化けの可能性は、少ないでしょうか?

##dumpしてみました。
/**** ERROR: (11) database disk image is malformed *****/
というエラーが表示されました。

こちらの記事を見つけましたので、これから試します。
https://qiita.com/rupao/items/84fef2d27ae1e7d6a51e

##タイトルが勝手に修正されることに対して
質問の内容が伝わらなくなってしまうので、正確な内容に書き換えました。
「依頼主から受け取った2015年当時稼働していたWordPressを、Xサーバーで稼働できるようにしたい」が、本来の依頼内容です。
でも、Sqliteのデータベースの破損が確実となり、syntaxエラーの修正を模索しているところです。

NIVECAST15でクリエの表示ができたので、修正を試みています。
でも、下記の部分の90行目の

SQL

1tablewp_blc_filterswp_blc_filtersCREATE TABLE wp_blc_filters (

のwp_blc_filterswp_blc_filtersが重複しているのかな?と思い一つ減らしたら、syntaxエラーは、なくなりました。
でも、
データベースファイルを開けません。
理由: malformed database schema (swp_blc_filter)
というエラーが出てしまい、GUIのツールで読み込みできないです。
イメージ説明
元に戻すとsyntaxエラーが出ます。

##VS CODEの拡張機能を使っても同じエラー
malformed database schema (wp_blc_filters) - near "�V": syntax error
と同じエラーになります。

NAVI CAST For Sqwliteを使うとソースの修正ができますが、正しい形式を知らないので、復旧できないのです。
修正の仕方を教えていただけましたら、幸いです。

##文字コードも関係あるかも・・・
今日気が付きました。
出先でWindowsのパソコンでVC CODEを使って、挑戦しました。
送られてきたZipファイルを解凍したら、ファイル名が文字化けしていたのです。
よく確かめてみると、依頼主は、Macで圧縮ファイルを作ったようです。

解凍して得たデータベースファイルをVC CODEでSqliteの拡張機能を使い開こうとしたら、エラーが出て開くことができませんでした。

私は、Macで作業していたので、気が付かなったのです。
このデータベースのSyntaxエラーは、何か関係あるかもしれないですね。

データベースの文字コードの件は、数か月前にハマった経験があります。
今回も、とても気になっています。
データベースの文字コードを調べる方法を、ご教授頂けましたら幸いです。

##クリエの冒頭にSQlite3とあります
イメージ説明
このように書かれてあるということは、SQlite3と認識してよろしいですか?

今は、折角 WordPressに書かれた記事を取り出すことができるように、新規にSQLite3データベースを作った WordPressを作って、模索したいと思っています。
アドバイスなど頂けましたら、幸いです。

##データベースのヘッダーを入替えも、状況に変化が無いです。
16進数で比較した結果
データベースとして復旧してWordPressを復旧できたら良いのですが、せめて投稿された記事を取り出すこともが出来たらと思い挑戦を続けています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こちらの記事を読んで、SQliteマネージャーを知りました。

https://allabout.co.jp/gm/gc/47422/

2007年の記事ですね。
IT関係で10年以上前の記事は古すぎると思います。

Deprecated: Non-static method sqlite::getDbVersion() should not be called statically in /hoge/SQLiteManager-1.2.4/include/SQLiteAutoConnect.class.php on line 12

SQLite Manager 1.2.4が 2010年頃のリリースみたいですので、新しい PHP で「推奨されなくなった機能」を使っていためエラーが出ているのだと思います。

まず、DBファイルのデータを見れるか確認したいということであれば...

SQLite がインストールされている環境の場合、コマンドラインユーティリティー の sqlite3 コマンドが使用できると思いますが、コマンドラインユーティリティーでファイルを開くとなにかメッセージは出力されますか?

gui ツールが良いのであれば、 DB Browser for SQLite 等を試してみてください。


WordPress で SQLite を開くためには、SQLite のバージョンが関係してきます。

以前のサーバーの SQLite のバージョンと 現在のエックスサーバーの SQLite のバージョンはいくつでしょうか?

phpinfo の出力などで SQLite Library のバージョンが確認できると思いますので、確認してください。

SQLite は、後方互換性がありますので、古いバージョンのSQLiteファイルを新しいバージョンの SQLite で開くことはできますが、新しいバージョンの SQLite ファイルを古いバージョンのSQLite で開くことはできません。


回答を書いている間に進展があったみたいなので、SQLite のインポート方法を追記

SQL を書き出すところまでは、成功したのですね。
ダンプした SQLファイルの種類がわかりませんが、SQLite の SQL だと仮定します。

新しいデータベースは、何を使われるのでしょうか?
SQLite ですか? MySQL ですか?

仮に SQLite として記載します。

以前の SQLite ファイルは、バックアップとして残しておくほうが良いので、ファイル名を変更するか 別のディレクトリに移動します。

SQLをダンプしたファイルを wp-content ディレクトリ に保存します。

まず、新しいSQLiteデータベースファイルを同じ場所・同じ名前で作成します。

コマンドラインで接続して、 cdコマンドで wp-content ディレクトリに移動する。

sqlite3 コマンドを使って、次のようにコマンドを実行して、sqlite3 .ht.sqlite を実行して新しい SQLiteファイルを作成する。

作成が成功すると SQLite> というプロンプトに変わると思いますので、 .read ./SQLをダンプしたファイル名と実行すると 指定した SQL ファイルを読み込みインポートされると思います。

SQLファイルに問題があるとエラーが表示されますので、エラー内容に応じた対処を行う必要があります。

SQLite> プロンプトから抜ける場合は、 .exit と入力して、エンターで実行すれば抜けて、OS のコマンドラインに戻ります。

投稿2021/12/01 02:49

編集2021/12/01 02:53
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

creator.M

2021/12/02 05:48

とても詳細に教えてくださって、助かります。 ありがとうございます。 感謝しています。 教えて頂けましたDB Browser for SQLiteを使ったところ、syntaxエラーが出て表示できなかったのです。 そのため、https://jp.navicat.com/ にあるソフトを使いデータベース の表示に成功しました。 そして、SQliteのまま拡張子がSQLで、保存することができました。 Macを使っていますがSSDの空き容量ないこともあり、SQlite3をインストールせずに、試行錯誤しています。 新しい WordPressでは、普通にMySQLを使うことを想定していました。 でも、SQliteを新しい WordPressで使えることを知りましたので、試してみます。 今、Linux MINTでXAMPPをインストールして古いPHP4.3で今回の WordPressの起動を試みているところでした。 データベースのインポート作業できるように、MINTにSQlite3をインストールして作業してみます。 本当に、ありがとうございます。 助かります。 後ほど、結果などお知らせしたいと思います。
creator.M

2021/12/02 13:10

教えてくださった手順でインポートを試みましたが、追加掲載しました内容のエラーが出てしまったので、解決していない状況です。 今、エラーの内容を調べているところです。 エラー修正の糸口またはヒントなどご教授頂けましたら、幸いです。
creator.M

2021/12/02 13:13

それからSQliteのバージョンですが、分からないのです。 すでに古いサーバーは、解約されて存在していないです。 FTPで丸ごとダウンロードしたWordPressのファイルがあるのみで、PHPのバージョンなどの情報もないです。 依頼を受けた内容のため、PHPのバージョンを覚えて見えるか確認をしているところです。 いずれにしても、古いPHPで手元にある WordPressを復元した方が、良さそうですね。 復元の方を先に進めます。
creator.M

2021/12/02 13:17

WordPressのバージョンは、4.4です。
creator.M

2021/12/03 04:55

データベースが破損しているのが確実となりました。 .ht.sqlite .dump | sqlite3 .ht_new.sqlite Error: near line 76: near "�V": syntax error というエラーが、出ます。 ネット検索して知ったチェックコマンドを実行しても、syntaxエラーで同じ文字化け?の文字が表示されます。 データベースを開くことができないため修復できず、困っています。 これは、文字コード違いの文字化けなのでしょうか?
guest

0

自己解決

今回新規にXAMPPでSQLiteを使って、WordPressを立ち上げました。
そして、テスト記事を投稿しました。
データベースの構造を確認するために、テストしました。

その結果、SQliteのデータベースの文字コードですが、Emエディタで開こうとすると、西ヨーロッパ言語と認識されました。
このため、今回は、FTPでダウンロードしたときに文字コードが変わってしまったんでは?という私の推測は、間違っていたことが確認できました。

新しいファイル

こちらが、今回問題のファイルを開いた時です。
古いファイル

こちらが、新しいファイルをDB Browser for SQLiteで開いた結果です。
DB Browser for SQLiteその1

DB Browser for SQLiteその2

今回は、データベースの構造を復旧させることができなかったので、諦めました。
データベースをテキストエディタで開いて、記事を人力で取り出せるように文字コードをUTF-8で保存し直して、依頼主に送りました。
また、エクセルで保存したファイルを希望されていたので、CSV形式のファイルを読み込む要領で、今回のファイルを読み込みエクセル形式で保存して送りました。

XAMPPの中で、データベースのファイルをフォルダー移動したのですが、文字化けは起きませんでした。
そのためFTPでダウンロードするときに、バイナリーファイルをバイナリーモードではなくアスキーモードでダウンロードしたために、ファイルが壊れたのかなと推測しています。

投稿2021/12/09 06:34

creator.M

総合スコア80

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問