[svn: E155004]svn update报database is locked错误的解决办法

今天突然发现项目更新脚本在拉代码的时候抛出了一个如下错误:

svn: E155004: Working copy '/home/svn/***/trunk/staticfiles' locked.
svn: E155004: '/home/svn/***/trunk/staticfiles' is already locked.
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)

根据错误提示,我先执行了一下 svn cleanup,结果依然抛出错误(忘记记录错误信息)

那没办法,求谷歌,求百度了。

前人总结的方法大致如下:

cd /your project path/.svn
mv wc.db wc.db.old         #先备份一份
sqlite3 wc.db.old          #打开copy的数据库  
sqlite> .backup main wc.db 
sqlite> .exit

结果居然找不到 .backup 这个命令?!使用 .help 看了下:

linux-xh50:/tmp # sqlite3 
SQLite version 3.6.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .help
.bail ON|OFF           Stop after hitting an error.  Default OFF
.databases             List names and files of attached databases
.dump ?TABLE? ...      Dump the database in an SQL text format
.echo ON|OFF           Turn command echo on or off
.exit                  Exit this program
.explain ON|OFF        Turn output mode suitable for EXPLAIN on or off.
.header(s) ON|OFF      Turn display of headers on or off
.help                  Show this message
.import FILE TABLE     Import data from FILE into TABLE
.indices TABLE         Show names of all indices on TABLE
.mode MODE ?TABLE?     Set output mode where MODE is one of:
                         csv      Comma-separated values
                         column   Left-aligned columns.  (See .width)
                         html     HTML <table> code
                         insert   SQL insert statements for TABLE
                         line     One value per line
                         list     Values delimited by .separator string
                         tabs     Tab-separated values
                         tcl      TCL list elements
.nullvalue STRING      Print STRING in place of NULL values
.output FILENAME       Send output to FILENAME
.output stdout         Send output to the screen
.prompt MAIN CONTINUE  Replace the standard prompts
.quit                  Exit this program
.read FILENAME         Execute SQL in FILENAME
.schema ?TABLE?        Show the CREATE statements
.separator STRING      Change separator used by output mode and .import
.show                  Show the current values for various settings
.tables ?PATTERN?      List names of tables matching a LIKE pattern
.timeout MS            Try opening locked tables for MS milliseconds
.timer ON|OFF          Turn the CPU timer measurement on or off
.width NUM NUM ...     Set column widths for "column" mode
sqlite>

这尼玛,哪有.backup 啊?试了下网上分享的修复方法:

有的时候 sqlite3 数据库会损坏,使用的时候提示:sqlite3 disk image malformat,这个时候,如何恢复数据呢? 解决方法: 首先去下载 sqlite3 的命令行工具 http://www.sqlite.org/download.html 再执行命令行命令,将你的数据库中的数据导出为 sql 语句文件 sqlite3 my.db sqlite&gt;.output tmp.sql sqlite&gt;.dump sqlite&gt;.quit 最后导入到一个新库中 sqlite3 mynew.db sqlite&gt;.read tmp.sql sqlite&gt;.quit

结果,修复报错:

Error: malformed database schema (nodes_update_checksum_trigger) - near "OLD": syntax error

难道是这个数据库文件损坏了?那就有点麻烦了。

突然,想到这 SUSE Linux 下安装的 sqlite3 没有 .backup 命令,那我到 Centos 下试试,也许版本不一样呢!

最后,将 wc.db 弄到了 centos 系统,发现有.backup 命令了!于是,重新导出一份数据。然后再移回之前的 SUSE 系统。继续 svn up 发现还是报错!我擦,这尼玛还真顽固啊!

试着执行了一下 svn cleanup,发现居然没报错了!再试 svn up 也正常了!原来 .backup 还真是可以!



写这篇文章的目的就是分享一个经验,偶尔出现疑难杂症,一定不要钻进死胡同出不来!真的非常有可能是系统(软件)的问题!换个系统(软件)试试可能就柳暗花明了!

所以,本文标题提到的报错的解决办法,依然还是前人总结的 sqlite3+ .backup 重新导出 wc.db,当你发现没有 .backup 命令时,很可能就是 sqlite3 的版本不对!这时候,你就可以升级 sqlite3 或者换一个服务器再试!

本文提到的 sqlite3 的版本如下,供参考:

①、有 .backup 命令的 sqlite3 版本:

[root@test-host1 ~]# sqlite3 
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

②、没有 .backup 命令的 sqlite3 版本:

zhangge@linux-xh50:~> sqlite3 
SQLite version 3.6.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

哦了,这个问题就写到这了!遇到问题切记不要钻死胡同,往往转个弯就能豁然开朗。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xiaoheike

Tomcat生成的session持久化到MySQL

The default Tomcat default session storage mechanism uses temporary files. To sa...

1064
来自专栏LIN_ZONE

MySQL视图更新

昨天在写美团2019秋招笔试题的时候遇到了关于视图是否能更新的问题,突然感觉这个问题之前复习的时候重点关注过,但是却又想不全。今天特地搜了一些资料总结一下。本文...

1723
来自专栏杨建荣的学习笔记

Oracle 12cR2中的ADG会话保留特性

Oracle 12cR2中有一个不错的特性,那就是Active Data Guard会话保留,原本的叫法是Preserving Active Data Guar...

2925
来自专栏zhangdd.com

解决MySQL 5.7日志时间与本地时间不一致的问题

在MySQL 5.7.2 新增了 log_timestamps 这个参数,该参数主要是控制 error log、genera log,等等记录日志的显示时间参数...

1022
来自专栏乐沙弥的世界

Oracle 阻塞(blocking blocked)

   阻塞是DBA经常碰到的情形,尤其是不良的应用程序设计的阻塞将导致性能严重下降直至数据库崩溃。对DBA而言,有必要知道如何定位到当前系统有哪些阻塞,到底谁是...

842
来自专栏乐沙弥的世界

RMAN catalog 的创建和使用

在存储恢复目录的数据库创建表空间用于存储恢复目录schema及恢复目录数据(本文使用已经创建好的数据库catadb来存储恢复目录)

922
来自专栏Java学习123

powerdesigner 15 如何导出sql schema

3287
来自专栏沃趣科技

ASM 翻译系列第三十三弹:REQUIRED_MIRROR_FREE_MB的含义

原作者:Bane Radulovic 译者: 陈亚军 审核: 魏兴华 DBGeeK社区联合出品 原文链接:http://asmsupportguy....

37410
来自专栏我的博客

Sqlite使用说明

安装apt-get install slqite .databases List names and files of attached databases(列...

3564
来自专栏耕耘实录

一个简单的Linux系统加固方案

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢。

1452

扫码关注云+社区

领取腾讯云代金券