100

作業コピーの変更をコミットできないため、を実行しようとしましたsvn cleanupが、次のエラーが発生しました。

sqllite:データベースディスクイメージの形式が正しくありません

クリーンアップは次のパスの処理に失敗しました

今何ができますか?

4

18 に答える 18

107

まず、リポジトリルート(子フォルダとして持つフォルダ)でcommand/を開きます。terminal.svn

cd /path/to/repository

sqlite3実行可能ファイルをダウンロードしてsqlite3、フォルダのルートに配置します。

リポジトリを追跡するsqliteデータベースで整合性チェックを実行します(/path/to/repository/.svn/wc.db):

sqlite3 .svn/wc.db "pragma integrity_check"

それはいくつかのエラーを報告するはずです。

次に、次のようにしてそれらをクリーンアップできる場合があります。

sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"

それでもエラーが発生する場合は、リポジトリの新しいコピーを一時フォルダーにチェックアウトし、.svnフォルダーを新しいコピーから古いコピーにコピーするオプションがあります。その後、古いコピーが再び機能するはずであり、一時フォルダを削除できます。

于 2013-04-08T08:43:03.480 に答える
28

整合性チェック

sqlite3 .svn/wc.db "pragma integrity_check"

掃除

sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"

あるいは

読み取ることができるデータベースの内容をバックアップファイルにダンプしてから、それを新しいデータベースファイルに戻すことができる場合があります。

sqlite3 .svn/wc.db

sqlite> .mode insert
sqlite> .output dump_all.sql
sqlite> .dump
sqlite> .exit

mv .svn/wc.db .svn/wc-corrupt.db
sqlite3 .svn/wc.db

sqlite> .read dump_all.sql
sqlite> .exit
于 2015-06-18T17:06:18.230 に答える
20

SVNクリーンアップが機能しませんでした。ローカルシステムのSVNフォルダーが破損しました。そのため、フォルダーを削除し、新しいフォルダーを再作成して、SVNから更新しました。それで問題は解決しました!

于 2013-05-30T18:52:40.917 に答える
16

電源の停電後、データベースのディスクイメージに不正な形式のエラーが発生し、制約に違反したため、推奨されるノードの再インデックスコマンドですべての問題が修正されませんでした。また、http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3Eで説明されている手順では問題は解決しませんでした。

私の場合の解決策:

  • svnリポジトリを一時フォルダに再度チェックアウトします
  • ファイル「.svn/wc.db」を新しいチェックアウトから破損したチェックアウトにコピー、つまり置換します

これは、元のsvnチェックアウトに多くの変更されたファイルまたはバージョン管理されていないファイルが含まれていて、新しいsvnチェックアウトに切り替えたくない場合に役立つことがあります。

于 2014-07-12T12:28:40.117 に答える
13

ピアワーカーのディレクトリから.svnフォルダーをコピーしたところ、問題が修正されました。

于 2014-07-28T11:30:51.657 に答える
3
  1. 別の場所でこのsvnをチェックしてください
  2. 非表示の.svnファイルを表示する
  3. wcファイルを置き換えます

これは私のために働きます!

于 2017-01-04T05:51:24.303 に答える
2

たぶん、解決策になる可能性があります:

  1. プロジェクトを右クリック
  2. チーム->切断
  3. 選択:削除...

ここで、再度接続します。

  1. プロジェクトを右クリック
  2. チーム->プロジェクトの共有
  3. repositorieあなたの:私のものを選択してくださいSVN(他の場合:gitなど)
  4. repositorieフォルダを選択してください

ノート:

私の場合、ファイルのバックアップを作成しました。(安全な背中:P)

編集:

私はSVNプラグインについて話しているEclipse:)

于 2013-04-02T07:03:16.913 に答える
2

これらは一時的な解決策であり、しばらくすると影響を受けるため、テーブルにデータを追加したり、テーブルからchecking integrityデータを削除したりするのに時間を無駄にしないでください。work queue

別のcheckout操作を行って、既存の.svnフォルダーを新しいフォルダーに置き換えます。を実行するupdateと、スムーズに進むはずです。

于 2018-11-18T16:25:21.573 に答える
1

Subversionサイトでこの投稿を見たことがありますか?ここで説明するように、データベースを直接検証して「修正」することもできます。(私は専門家ではないことに注意してください、私はただグーグル検索をしました。あなたの問題とはまったく関係がないかもしれません)。

個人的には、リポジトリをもう一度チェックして、変更を再適用してみます。あなたの場合でもこれが可能かどうかわかりませんか?

于 2012-12-03T00:48:51.740 に答える
1

私の研究を通して、私は2つの実行可能な解決策を見つけました。

  1. いずれかのタイプの接続を使用している場合は、ssh、samba、マウント、切断/アンマウント、および再接続/再マウント。もう一度やり直してください。これで問題が解決することがよくあります。その後、svnクリーンアップを実行するか、通常どおりに作業を続けることができます(問題がいつ発生したかによって異なります)。コンピュータを再起動すると、問題も一度修正されました...はい、それはばかげています!

  2. 場合によっては、ファイルをrm -rfして(または、この用語に慣れていない場合は、svnフォルダーを削除して)、svnリポジトリをもう一度チェックアウトするだけです。これで必ずしも問題が解決するわけではなく、失いたくない変更がある場合もあることに注意してください。それが私が2番目のオプションとしてそれを使用する理由です。

これが皆さんのお役に立てば幸いです。

于 2013-09-12T21:28:39.310 に答える
1

ビジュアルsvnサーバーのrep-cache.dbの破損の問題を解決しました。

それらは2つの解決策です。

VisualSVNサーバーサービスを停止します。

sqllite Webサイトからsqllite3.exeシェルをダウンロードし、それをrepoのdbフォルダーにコピーします。

リポジトリのdbフォルダのコマンドプロンプトで次のコマンドを入力します。

-最初の解決策-

sqlite3 rep-cache.db

.clone rep-cache-new.db

ctrl+cを押してsqlliteを終了します。

ren rep-cache.db rep-cache-old.db

ren re-cache-new.db rep-cache.db

--2番目の解決策-

rep-cache.dbを削除します

del rep-cache.db

自動的に作成されます。

于 2014-07-23T10:20:56.330 に答える
1

Tortoise SVNをインストールする場合は、タスクマネージャーに移動して停止してください。次に、フォルダを削除してみてください。それが動作します

于 2014-09-16T08:39:30.977 に答える
1

非表示の.svnフォルダーを削除してから、同じURLへのフォルダーのチェックアウトを実行することで、この問題が発生した場合に修正しました。

これにより、変更したファイルは上書きされず、サーバーから新しいコピーを取得する代わりに、既存のすべてのファイルがバージョン管理されました。

于 2018-03-09T19:21:50.543 に答える
0

Subversionのクリーンアップによると、マークされた回答が正しい回答である可能性があります。しかし、エラーは間違いなく一般的なものであり、この質問ページで私をここに導きました。

私たちのプロジェクトには依存関係System.Data.SQLiteがあり、エラーメッセージは同じでした:

データベースディスクイメージの形式が正しくありません

私の場合、SQLiteStudio3.1.1を介して次のチェックスクリプトと次のスクリプトを実行しました。

pragma integrity_check

(これらの統計が役立つかどうかはわかりませんが、とにかく共有します...)

データベースファイルは、メモリの接続ジャーナルモードを介して1.5年間日常的に使用されており、サイズは約750MBでした。テーブルごとに約140Kのレコードがあり、6つのテーブルがこれほど大きかった。

整合性チェックスクリプトの実行後、30分の実行時間後に11行が返されました。

wrong # of entries in index sqlite_autoindex_MyTableName_1
wrong # of entries in index MyOtherTableAndOrIndexName_1
wrong # of entries in index sqlite_autoindex_MyOtherTableAndOrIndexName_2
etc...

すべての結果はインデックスに関するものでした。各インデックスを再構築した後、私の問題は解決しました。

reindex sqlite_autoindex_MyTableName_1;
reindex MyOtherTableAndOrIndexName_1;
reindex sqlite_autoindex_MyOtherTableAndOrIndexName_2;

インデックスを再作成した後、整合性チェックの結果は「ok」でした。

昨年このエラーが発生し、バックアップからDBを復元してから、すべての変更を再コミットしました。これは本当に悪夢でした...

于 2020-02-10T14:17:01.523 に答える
0

データをチェックアウトしようとしているローカルマシンスペースを確認してください。私の場合、私のcドライブには完全なチェックアウト用のスペースがないため、エラーが発生していました:)

于 2021-10-11T05:42:34.840 に答える
-1

ディレクトリロックの人を心配する必要はありません。

必要なのは、sqllite3がインストールされていない場合は、以下のコマンドを入力することです。

>sudo apt-get install sqlite3

このコマンドを入力してSVNデータベースを開きます。

>sqlite3 .svn/wc.db 

今、あなたがする必要があるのは、SVNDBからロックエントリを削除することです。

sqlite>  select * from wc_lock;
1|-1           
sqlite>  delete from wc_lock;
sqlite>  select * from wc_lock;
sqlite>  .q

プロセスが完了しました。SVNリポジトリで作業し、問題なく操作をコミット、更新、追加、削除できます。

:-)

于 2015-09-10T05:25:55.473 に答える
-2

アプリの開発中に、メッセージが頻繁で大規模なINSERTおよびUPDATE操作から送信されていることがわかりました。1回の操作で複数の行またはデータを挿入および更新してください。

var updateStatementString : String! = ""

for item in cardids {

let newstring = "UPDATE "+TABLE_NAME+" SET pendingImages = '\(pendingImage)\' WHERE cardId = '\(item)\';"
            updateStatementString.append(newstring)

        }


        print(updateStatementString)
        let results = dbManager.sharedInstance.update(updateStatementString: updateStatementString)

        return Int64(results)
于 2017-08-18T14:30:48.697 に答える
-4

.svnを含むフォルダにcd

rm -rf .svn
svn co http://mon.svn/mondepot/ . --force
于 2014-12-21T16:10:38.960 に答える