javasgl

step by step


  • Home

  • Archives

  • Tags

  • Categories

  • About

  • Search

mysql unsigned/int字段越界

Posted on 2017-05-22 | In mysql | Visitors

线上的MySQL错误日志中遇到了以下问题

1
Data truncation: BIGINT UNSIGNED value is out of range in `(database.tablename.fieldname)`

MySQL版本为:

1
2
3
4
5
6
7
mysql> select version();
+------------+
| version() |
+------------+
| 5.6.21-log |
+------------+
1 row in set (0.00 sec)

引起这个错误的原因是sql语句中对unsigned字段进行了递减操作的结果为负数导致的,

1
update database.tablename set fieldname=fieldname-num

而MySQL的模式是默认的mode:

1
2
3
4
5
6
7
mysql> show variables like 'sql_mode';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| sql_mode | NO_ENGINE_SUBSTITUTION |
+---------------+------------------------+
1 row in set (0.00 sec)

解决方案有3种:

Read more »

Linux强制卸载设备

Posted on 2017-05-12 | In Linux | Visitors

Linux下因为磁盘出问题而导致了Input/output error,所以准备先把有问题的磁盘卸载掉再重新挂上试试。

执行umount:

1
2
3
4
[root@hostname ~]# umount -n /dev/sdc1
umount: /home/data: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))

显示设备正忙,所以执行umount -nf:

1
2
3
4
5
6
[root@hostname ~]# umount -nf /dev/sdc1
umount2: Device or resource busy
umount: /home/data: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
umount2: Device or resource busy

还是无法卸载。

根据给出的提示,使用losf或者fuser来找出那些进程正在使用该设备:

1
2
3
[root@yourdream ~]# fuser -cu /dev/sdc1
/dev/sdc1: 2444c(root) 2458c(root) 3041c(mysql)
[root@yourdream ~]# fuser -cu /dev/sdc1

使用c指定挂载的文件系统,u显示使用者的id。可以看出三个进程正在使用,通过ps可以查到分别为redis和mysql正在使用。
因此,卸载之前停掉redis和mysql之后再次执行umount就能正常卸载了。

I-love-vim

Posted on 2017-05-07 | In tools | Visitors

个人是一个vi重度使用者,所以尽可能的会希望所使用的工具中都能支持vim来方便操作。

  • chrome浏览器支持 vim操作: Vimium 扩展
  • atom 编辑器: vim-mode、vim-mode-plus
  • sublime text: 天然支持,配置中ignored_packages 置为空[]即可
  • idea 编辑器:vim 插件用来编辑文件内容,还有一个和Vimium相似的插件(名称遗忘,自己未使用),以和Vimium相同的方式操作idea的各种菜单
  • command line: 大部分天然支持vim编辑模式 (非 windows 系统),自行给vim安装了一些插件,打造成了一个命令行的golang的IDE
    • 目录:scrooloose/nerdtree
    • 目录git状态:Xuyuanp/nerdtree-git-plugin
    • 自动完成:Shougo/neocomplete
    • go相关格式等工具:fatih/vim-go

最后,附上一张命令行IDE效果图:
vim-ide

dbm--python的一个简易K-V数据库

Posted on 2017-05-07 | In python | Visitors

在一些小型简单的python程序中,不需要(不想)引入庞大的关系型数据库或者其他大型的非关系型数据库(NoSql)时,dbm模块是一个非常不错的选择。
不过在使用的时候需要注意的是,它要求key,value均为字符串类型。
可以对其进行一个简单的封装,便于使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import dbm
from models.Config.Config import Config

class DBM(object):
def __init__(self):
self._db = dbm.open(Config.parse_config('dbm', 'dbfile'), 'c')

def set(self, key, value):
self._db[key] = str(value)
return self

def del(self, key):
if key in self._db.keys():
del self._db[key]

def get(self, key):
if key in self._db.keys():
return self._db[key]
else:
return None

def __del__(self):
self._db.close()

Config 是自己封装的一个简易的配置文件解析的类,负责从ini文件中读取指定的配置

dbm 的 api 非常简单,set、del、keys,其数据结构和字典非常相似,可以在小型项目中来当做简易的K/V数据库来使用。

hexo 命令备忘录

Posted on 2017-05-07 | In notes | Visitors

这里记录个人一些 hexo 常用命令备查:

  • 创建新的文章: hexo new post-title
  • 生成db和静态文件: hexo generate,缩写为 hexo g
  • 删除cache和静态文件:hexo clean
  • 本地开始预览server:hexo server,缩写为 hexo s,默认端口为 4000
  • 部署到远程: hexo deply,缩写为 hexo d

有时候部署到远程后发现blog并没有更新,则可以先clean之后再 deploy:

1
2
hexo clean
hexo g -d

1…9101112
javasgl

javasgl

A journey of a thousand miles begins with single step

60 posts
13 categories
94 tags
RSS
GitHub Wechat
© 2020 javasgl
Powered by Hexo
Theme - NexT.Mist
0%