Tôi đã cố gắng thực hiện svn cleanup
vì tôi không thể thực hiện các thay đổi trong bản sao làm việc của mình và tôi gặp lỗi sau:
sqllite: hình ảnh đĩa cơ sở dữ liệu không đúng định dạng
Tôi có thể làm gì ngay bây giờ?
Tôi đã cố gắng thực hiện svn cleanup
vì tôi không thể thực hiện các thay đổi trong bản sao làm việc của mình và tôi gặp lỗi sau:
sqllite: hình ảnh đĩa cơ sở dữ liệu không đúng định dạng
Tôi có thể làm gì ngay bây giờ?
Câu trả lời:
Tôi đã từng gặp vấn đề tương tự. Bài đăng trên blog sau đã giúp tôi giải quyết vấn đề này: http://www.polak.ro/svn-e200030-sqlite-database-disk-image-is-malformed.html
Bạn kiểm tra tính toàn vẹn trên cơ sở dữ liệu sqlite theo dõi kho lưu trữ (/.svn/wc.db):
sqlite3 .svn/wc.db "pragma integrity_check"
Điều đó sẽ báo cáo một số lỗi.
Sau đó, bạn có thể làm sạch chúng bằng cách thực hiện:
sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"
Nếu vẫn còn lỗi sau đó, bạn vẫn có tùy chọn kiểm tra bản sao mới của kho lưu trữ vào thư mục tạm thời và sao chép thư mục .svn từ bản sao mới sang bản cũ. Sau đó, bản sao cũ sẽ hoạt động trở lại và bạn có thể xóa thư mục tạm thời.
Error: unable to identify the object to be reindexed
sqlite3 .svn/wc.db "pragma integrity_check"
sqlite3 .svn/wc.db "reindex nodes"
sqlite3 .svn/wc.db "reindex pristine"
Bạn có thể kết xuất nội dung của cơ sở dữ liệu có thể đọc vào tệp sao lưu, sau đó chuyển nó trở lại tệp cơ sở dữ liệu mới:
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
ROLLBACK;
thành COMMIT;
trước khi doung .read dump_all.sql
.
svn: E235000: In file 'D:\Development\SVN\Releases\TortoiseSVN-1.9.7\ext\subversion\subversion\libsvn_wc\wc_db_wcroot.c' line 311: assertion failed (format >= 1)
, tuy nhiên có một cách giải quyết ở đây: hanscarpenter.blogspot.com.au/2016/05/…
sqlite3 .svn/wc.db 'PRAGMA user_version;'
ngược lại với db ban đầu để có được số chính xác. 2. chạy sqlite3 .svn/wc.db 'PRAGMA user_version = XXX;'
với phiên bản khôi phục với số lượng chính xác.
Quá trình dọn dẹp SVN không hoạt động. Thư mục SVN trên hệ thống cục bộ của tôi bị hỏng. Vì vậy, tôi vừa xóa thư mục, tạo lại một thư mục mới và cập nhật từ SVN. Điều đó đã giải quyết vấn đề!
Sau khi mất điện, tôi gặp phải hình ảnh đĩa cơ sở dữ liệu bị lỗi không đúng định dạng và lệnh các nút lập chỉ mục được đề xuất không khắc phục được tất cả các vấn đề do các ràng buộc bị vi phạm. Ngoài ra, quy trình được mô tả trong http://mail-archives.apache.org/mod_mbox/subversion-users/201111.mbox/%3C874nybhpxi.fsf@stat.home.lan%3E đã không giải quyết được sự cố.
Giải pháp trong trường hợp của tôi:
Điều này có thể hữu ích, nếu kiểm tra svn ban đầu của bạn chứa nhiều tệp đã sửa đổi hoặc chưa được phiên bản và bạn không muốn chuyển sang kiểm tra svn mới.
Tôi đã sao chép qua thư mục .svn từ thư mục của nhân viên ngang hàng của mình và điều đó đã khắc phục được sự cố.
Có thể, có thể là một giải pháp:
Bây giờ, hãy kết nối lại một lần nữa:
repositorie
: của tôi SVN
(trường hợp khác: git, v.v.)repositorie
thư mục của bạnGhi chú:
Trong trường hợp của tôi, tôi đã sao lưu các tệp của mình. (bạn an toàn trở lại: P)
Biên tập:
Tôi đang nói về SVN
plugin trên Eclipse
:)
Bạn đã thấy bài đăng này trên trang lật đổ chưa? Bạn cũng có thể thử xác thực và "sửa" cơ sở dữ liệu trực tiếp như được mô tả ở đây . (Lưu ý rằng tôi không phải là chuyên gia, tôi chỉ tìm kiếm nhanh trên google. Có thể không liên quan đến vấn đề của bạn chút nào).
Về mặt cá nhân, tôi sẽ thử kiểm tra lại bản repo và áp dụng lại các thay đổi của bạn. Không chắc chắn nếu điều này là có thể mặc dù trong trường hợp của bạn?
Trong suốt quá trình nghiên cứu của mình, tôi đã tìm thấy 2 giải pháp khả thi.
Nếu bạn đang sử dụng bất kỳ loại kết nối nào, hãy ssh, samba, mounting, ngắt kết nối / ngắt kết nối và kết nối lại / nối lại. Hãy thử lại, điều này thường giải quyết được vấn đề cho tôi. Sau đó, bạn có thể dọn dẹp svn hoặc tiếp tục hoạt động bình thường (tùy thuộc vào thời điểm sự cố xuất hiện). Khởi động lại máy tính của tôi cũng đã khắc phục được sự cố một lần ... vâng, tôi biết thật là ngu ngốc!
Đôi khi, tất cả những gì cần làm là rm -rf các tệp của bạn (hoặc nếu bạn không quen với thuật ngữ này, chỉ cần xóa thư mục svn của bạn) và kiểm tra lại kho lưu trữ svn của bạn một lần nữa. Xin lưu ý rằng điều này không phải lúc nào cũng giải quyết được vấn đề và bạn cũng có thể có những thay đổi mà bạn không muốn mất. Đó là lý do tại sao tôi sử dụng nó như là tùy chọn thứ hai.
Hy vọng điều này sẽ giúp các bạn!
Tôi đã giải quyết được vấn đề hỏng máy chủ svn trực quan rep-cache.db.
Họ là hai giải pháp.
Dừng dịch vụ Máy chủ Visual SVN.
Tải xuống trình bao sqllite3.exe từ trang web sqllite và sao chép nó vào thư mục db của repo.
Nhập các lệnh sau tại dấu nhắc lệnh trong thư mục db của repo.
- Giải pháp đầu tiên -
sqlite3 rep-cache.db
.clone rep-cache-new.db
nhấn ctrl + c để thoát sqllite.
ren rep-cache.db rep-cache-old.db
ren re-cache-new.db rep-cache.db
- Giải pháp thứ 2 -
Xóa rep-cache.db
del rep-cache.db
nó sẽ được tạo tự động.
Tôi đã sửa lỗi này cho một trường hợp của nó xảy ra với tôi bằng cách xóa thư mục .svn ẩn và sau đó thực hiện kiểm tra thư mục đến cùng một URL.
Điều này không ghi đè lên bất kỳ tệp nào đã sửa đổi của tôi và chỉ tạo phiên bản cho tất cả các tệp hiện có thay vì lấy các bản sao mới từ máy chủ.
Đừng lãng phí thời gian của bạn vào checking integrity
hoặc xóa dữ liệu khỏiwork queue
bảng vì đây là những giải pháp tạm thời và nó sẽ quay trở lại bạn sau một thời gian.
Chỉ cần thực hiện một thao tác khác checkout
và thay thế thư mục .svn hiện có bằng thư mục mới. Làm một update
và sau đó nó sẽ trôi chảy.
Nếu bạn cài đặt Tortoise SVN, Vui lòng chuyển đến trình quản lý tác vụ và dừng nó. Sau đó, cố gắng xóa thư mục. nó sẽ hoạt động
Câu trả lời được đánh dấu có thể là câu đúng, theo dọn dẹp lật đổ. Nhưng lỗi chắc chắn là một lỗi chung chung, dẫn tôi đến đây, trang câu hỏi này.
Dự án của chúng tôi có System.Data.SQLite phụ thuộc và thông báo lỗi giống nhau:
hình ảnh đĩa cơ sở dữ liệu không đúng định dạng
Trong trường hợp của tôi, tôi đã thực thi tập lệnh kiểm tra sau và những điều sau thông qua SQLiteStudio 3.1.1 .
pragma integrity_check
(Tôi không biết liệu những thống kê này có giúp ích được gì không, nhưng dù sao thì tôi cũng sẽ chia sẻ chúng ...)
Tệp DataBase đang được sử dụng hàng ngày trong 1,5 năm, thông qua chế độ nhật ký kết nối trên Bộ nhớ và có dung lượng khoảng 750 MB. Có khoảng 140 nghìn bản ghi cho mỗi bảng và 6 bảng lớn như vậy.
Sau khi thực thi tập lệnh Kiểm tra tính toàn vẹn , 11 hàng đã được trả lại sau 30 phút thời gian thực thi.
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...
Tất cả các kết quả là về các chỉ mục. Sau khi xây dựng lại từng chỉ mục, vấn đề của tôi đã được giải quyết.
reindex sqlite_autoindex_MyTableName_1;
reindex MyOtherTableAndOrIndexName_1;
reindex sqlite_autoindex_MyOtherTableAndOrIndexName_2;
Sau khi lập chỉ mục lại, kết quả kiểm tra tính toàn vẹn là "ok".
Tôi đã gặp lỗi này vào năm ngoái và tôi đã được khôi phục DB từ bản sao lưu, sau đó thực hiện lại tất cả các thay đổi, đó là một cơn ác mộng thực sự ...
không cần phải lo lắng cho một khóa thư mục guys.
Bạn chỉ cần làm là, Nếu sqllite3 chưa được cài đặt, hãy nhập lệnh dưới đây,
>sudo apt-get install sqlite3
Mở cơ sở dữ liệu SVN bằng cách gõ lệnh này,
>sqlite3 .svn/wc.db
Bây giờ bạn chỉ cần làm là xóa các mục khóa khỏi SVN DB.
sqlite> select * from wc_lock; 1|-1 sqlite> delete from wc_lock; sqlite> select * from wc_lock; sqlite> .q
Quá trình đã hoàn tất. Bạn có thể làm việc trên kho lưu trữ SVN của mình, thực hiện các hoạt động cam kết, cập nhật, thêm, xóa mà không gặp vấn đề gì.
:-)
Trong quá trình phát triển ứng dụng, tôi nhận thấy rằng các thông báo đến từ các hoạt động INSERT và UPDATE thường xuyên và lớn. Đảm bảo CHÈN và CẬP NHẬT nhiều hàng hoặc dữ liệu trong một thao tác duy nhất.
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)