MYSQL

MYSQL数据库出错代码对比列表  

2010-05-06 12:48:34|  分类: mysql|字号 订阅

 
 

  1006:创建数据库失败

  1007:数据库已存在,创建数据库失败

  1008:数据库不存在,删除数据库失败

  1009:不能删除数据库文件导致删除数据库失败

  1010:不能删除数据目录导致删除数据库失败

  1011:删除数据库文件失败

  1012:不能读取系统表中的记录

  1020:记录已被其他用户修改

  1021:硬盘剩余空间不足,请加大硬盘可用空间

  1022:关键字重复,更改记录失败

  1023:关闭时发生错误

  1024:读文件错误

  1025:更改名字时发生错误

  1026:写文件错误

  1032:记录不存在

  1036:数据表是只读的,不能对它进行修改

  1037:系统内存不足,请重启数据库或重启服务器

  1038:用于排序的内存不足,请增大排序缓冲区

  1040:已到达数据库的最大连接数,请加大数据库可用连接数

  1041:系统内存不足

  1042:无效的主机名

  1043:无效连接

  1044:当前用户没有访问数据库的权限

  1045:不能连接数据库,用户名或密码错误

  1048:字段不能为空

  1049:数据库不存在

  1050:数据表已存在

  1051:数据表不存在

  1054:字段不存在
 
  在 linux 下,经常出现的情况就是使用 VBB 这种论坛系统时,出现缓慢,mysql 假死状态,sleep进程过多等等现像。导致几十个用户,就把系统搞定了。
    其实这是 mysql 配置上的问题, 默认的 linux 中, mysql 的配置是 my-large.cnf 配置,该配置适合大型服务器。有高内存,比如2G,4G内存的,适合使用,而一般512M内存 的就不行了。它会占用512M内存来保存系统 mysql 的进程,这些进程长期堆质,并不释放,导致系统缓慢。所以,把配置改变成为 my-small.cnf ,小型配置就可以了。它的配置如下:
    # Example mysql config file for small systems.
    #
    # This is for a system with little memory (<= 64M) where MySQL is only used
    # from time to time and it's important that the mysqld deamon
    # doesn't use much resources.
    #
    # You can copy this file to
    # /etc/my.cnf to set global options,
    # mysql-data-dir/my.cnf to set server-specific options (in this
    # installation this directory is /var/lib/mysql) or
    # ~/.my.cnf to set user-specific options.
    #
    # One can in this file use all long options that the program supports.
    # If you want to know which options a program support, run the program
    # with --help option.
    # The following options will be passed to all MySQL clients
    [client]
    #password = 你的密码
    port = 3306
    socket = /tmp/mysql.sock
    # Here follows entries for some specific programs
    # The MySQL server
    [mysqld]
    port = 3306
    socket = /tmp/mysql.sock
    skip-locking
    set-variable = key_buffer=16K
    set-variable = max_allowed_packet=1M
    set-variable = thread_stack=64K
    set-variable = table_cache=4
    set-variable = sort_buffer=64K
    set-variable = net_buffer_length=2K
    server-id = 1
    # Uncomment the following if you want to log updates
    #log-bin
    # Uncomment the following if you are NOT using BDB tables
    #skip-bdb
    # Uncomment the following if you are using InnoDB tables
    #innodb_data_home_dir = /var/lib/mysql/
    #innodb_data_file_path = ibdata1:10M:autoextend
    #innodb_log_group_home_dir = /var/lib/mysql/
    #innodb_log_arch_dir = /var/lib/mysql/
    # You can set .._buffer_pool_size up to 50 - 80 %
    # of RAM but beware of setting memory usage too high
    #set-variable = innodb_buffer_pool_size=16M
    #set-variable = innodb_additional_mem_pool_size=2M
    # Set .._log_file_size to 25 % of buffer pool size
    #set-variable = innodb_log_file_size=5M
    #set-variable = innodb_log_buffer_size=8M
    #innodb_flush_log_at_trx_commit=1
    #set-variable = innodb_lock_wait_timeout=50
    [mysqldump]
    quick
    set-variable = max_allowed_packet=16M
    [mysql]
    no-auto-rehash
    # Remove the next comment character if you are not familiar with SQL
    #safe-updates
    [isamchk]
    set-variable = key_buffer=8M
    set-variable = sort_buffer=8M
    [myisamchk]
    set-variable = key_buffer=8M
    set-variable = sort_buffer=8M
    [mysqlhotcopy]
    interactive-timeout
    以上配置足够 你的系统高速运行 mysql 了,sleep的进程,很快就被回收,不占资源,这非常适合小型服务器。一般个人托管的服务器也很适合。
 
 
 linux查看指定程序的资源占用
2009-10-15 21:51:48
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
      linux下,或者说*inx下有个top命令,可以让我们实时的监控进程运行状态,包括cpu占用,内存占用等。
      常用的管理指令像c查看命令行参数,s调整刷新时间,M以内存排序,P以cpu排序,N以进程排序就不说了,这里咱们说说查看指定进程资源占用这一特殊情况。比如说:我只查看apache或者mysql的资源占用情况。怎样才能从一堆的信息中找到这个有用信息呢?
      1.特定用户
      一般像apache或者mysql这些服务我们都会用专门的帐号来运行它们,这样的话我们可以直接利用top的U or u指令,指定特定的用户。我们就可以得到想要的信息了。
这种方法个人感觉很强大,因为它可以适应指定用户进程数不断变动的情况例如apache。
      2.指定进程
      因为习惯上,我们会将很多服务都以root的身份运行。这种情况怎么挑出来有用的信息呢?那我们就要找不同点了,是内存占用高,cpu占用高还是进程id高?对于启动以后不再增加进程的程序笔者又想出来一招。开源的工具总会给你惊喜,只有你想不到的,没有它做不到的。到底怎么办呢?仔细的读了几遍top的man,发现了一个有用的参数-p。而且它支持同时传入多个pid。
于是一条接近无敌的指令出现了:top -p `pgrep mysql |xargs perl -e "print join ',',@ARGV" 
分析一下:本例以mysql为例。先通过pgrep取得所有包含关键字mysql的进程id,然后通过一句perl指令把得到的进程组合成top -p参数可以接受的格式,然后传给top。
      这条指令虽然达到了目的,但是个人觉得有点繁锁。使用了一句perl命令主要是不知道怎么用bash命令把得到的进程ip变成pid1,pid2,pid3这样的形式,笔者在这一步卡了十多分钟。另外得到结果以后怎么通过管道+xargs传给top -p笔者也没有想出来,希望有更简捷方法的朋友指点:)

本文出自 “rainbird” 博客,转载请与作者联系!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值