需要备忘一下的是gui下代替sudo,su的程序是gksu.可惜是英文的界面.
还可以用glade设计gtk的界面,可惜我是写完这个程序才知道.

封装了一个imagebutton出来,也算是对python的进一步学习吧~~~window的样式也做了修改~~~现在基本上已经可以正常使用了~~~我把我那个丑陋的fvwm菜单的退出已经换为这个了~~
阅读全文


    注:本文系博主原创文章,转载请注明出处。



===========================================一号分割线========================================

    思科、华为等多层交换机一般都自带了板卡温度检测功能,对于这些骨干机房,若没有安装温度报警远程监控等设备的,可以使用思科、华为设备的温度自检功能来实现对机房温度的控制。

    系统的实现的过程是,登陆相应的设备,使用show environment 命令,查询温度,再利用VB脚本功能,提取出相应的关键字,并判断温度。此外再结合计划任务功能,可以实现定时检测报警功能。

    这边仅以Cisco 7609,4006等设备为例,说明其实现的过程。

    -----------------------------------分割线------------------------------------------------

    第一步:SecureCRT脚本编写,代码如下

#$language = "VBScript"
#$interface = "1.0"

'||=================================||
'||Query BackBone Switch Temperature||
'||Edit By 王敩                     ||
'||2009-6-26                        ||
'||Ver 1.0                          ||
'||=================================||


'===========Start Define Global Parameters=========
Dim FSO
Dim line
Dim SwitchArr(4,3)  '设备列表,行数代表设备数量,列用于存放相关数据
Dim SplitKeyW(4,2) '取字符用关键字列表
Dim TempString '临时存放温度相关行
Dim NowRow '存放当前光标所在行号

'常量定义
Const ForReading = 1
Const ForAppending=8
Const ForWriting=2
Const HighTemperatureAlarmFile="D:\SecureScript\roomtemphigh.wav"
Const HighTemperatureShowFile="D:\温度过高.txt"
beep = chr(007)

'定义数据库连接
Set conn=CreateObject("ADODB.Connection")
conn.Open"driver={sql server};server=x.x.x.x;uid=sa;pwd=sa;"&"database=NMC;"

'数组定义
SwitchArr(0,0)="x.x.x.x"
SwitchArr(0,1)="19"  '代表温度关键字所在的行,用于SecureCRT
SwitchArr(0,2)="设备一"
SwitchArr(1,0)="y.y.y.y"
SwitchArr(1,1)="4"
SwitchArr(1,2)="设备二"
SwitchArr(2,0)="z.z.z.z"
SwitchArr(2,1)="4"
SwitchArr(2,2)="设备三"
SwitchArr(3,0)="w.w.w.w"
SwitchArr(3,1)="4"
SwitchArr(3,2)="设备四"

SplitKeyW(0,0)="temperature:"    '温度字符前面的字符
SplitKeyW(0,1)="C"               '温度字符后面的字符
SplitKeyW(1,0)="="
SplitKeyW(1,1)="degre"
SplitKeyW(2,0)="="
SplitKeyW(2,1)="degre"
SplitKeyW(3,0)="="
SplitKeyW(3,1)="degre"

'==============================Main Sub=======================================================
Sub main
    '数据库路径及连接参数
    pass="*******"      '登陆设备的密码
    username="*******"  '登陆设备的用户名

For i=0 To 3
   '连接设备,通过堡垒主机中转
  crt.Screen.WaitForString "2,3]"
  crt.Screen.Send "1" & VbCr
  crt.Screen.WaitForString "ip address and Enter:"
  crt.Screen.Send SwitchArr(i,0) & VbCr
  
  'crt.sleep 2000
  If (crt.Screen.WaitForString("Username:",5))=True Then
   crt.Screen.Send username & VbCr
   crt.Screen.WaitForString("Password:")
   crt.Screen.Send pass & VbCr
   crt.Screen.WaitForString ">",5
   crt.Screen.Send "show environment temperature" & VbCr
   crt.Screen.WaitForString ">",5
   NowRow=crt.Screen.CurrentRow '取得当前光标所在行号
   TempString=crt.Screen.Get2 (NowRow-Int(SwitchArr(i,1)),1,NowRow-Int(SwitchArr(i,1)),50)  '提取温度所在行

   KeyStringStart=InStr(TempString,SplitKeyW(i,0))
   KeyStringEnd=InStr(TempString,SplitKeyW(i,1))
   If KeyStringStart<>0 And KeyStringEnd<>0 Then
    TemperatureStr=Mid(TempString,KeyStringStart+Len(SplitKeyW(i,0)),KeyStringEnd-(KeyStringStart+Len(SplitKeyW(i,0))))

    '温度大于36度报警,一般36度对应机房温度在23度左右
    If Int(TemperatureStr)>36 Then
     set wshShell = CreateObject("wscript.Shell")
     '使用文本文件显示报警,同时播放五次声音
     WshShell.Run "cmd /c @echo 时间:{"&Now()&"}机房:{"&SwitchArr(i,2)&"温度过高:"&TemperatureStr&"度}>"&HighTemperatureShowFile
     WshShell.Run "notepad.exe "&HighTemperatureShowFile
     'WshShell.Run "cmd /c @echo " & beep& beep& beep& beep, 0
     WshShell.Run HighTemperatureAlarmFile
     crt.sleep 2000
     WshShell.Run HighTemperatureAlarmFile
     crt.sleep 2000
     WshShell.Run HighTemperatureAlarmFile
     crt.sleep 2000
     WshShell.Run HighTemperatureAlarmFile
     crt.sleep 2000
    End If

    '准备将温度写入数据库
    strSqlInsert="insert into AutoLog_RoomTemperature (TemperatureTime,Temperature,TemperatureRoom) values ('"&Now()&"','"&TemperatureStr&"','"&SwitchArr(i,2)&"')"
    conn.Execute(strSqlInsert)
   Else
    set wshShell = CreateObject("wscript.Shell")
    WshShell.Run "cmd /c @echo 时间:{"&Now()&"}机房:{"&SwitchArr(i,2)&"关键字出错,开始字符:{"&KeyStringStart&"}结束字符:{"&KeyStringEnd&"}"
    WshShell.Run "notepad.exe "&HighTemperatureShowFile
   End If
   crt.Screen.Send "exit" & VbCr
  End If
Next
crt.Screen.WaitForString "2,3]"
crt.Screen.Send "3" & VbCr
crt.session.disconnect()
crt.quit
End Sub

---------------------------------------分割线-----------------------------------------------

完了后保存为vbs文件,同时在SecureCrt里创建一会话,名字为checkTemperature,并勾选登陆脚本,选择该脚本。

然后再创建一计划任务,任务运行"C:\Program Files\SecureCRT\SecureCRT.EXE" /S checkTemperature,日程安排 里高级选项中使用重复任务,每20分钟检测一次。

然后就可以测试运行效果了。



总结:

    该脚本考虑到实际情况,一般监控中心肯定有人在的,所以没有加入登陆失败的处理代码;登陆出错时,人工操作一下就行了,一般是由于网络时延过大引起的。有需要的朋友可以自己加。

    华为的设备原理是一样的,只不过关键字可能不一样。大家可以自己根据情况添加。

    欢迎大家共同讨论与提高
来源:http://blog.sina.com.cn/s/blog_49cd61e70100drhx.html
  相信大家都有这样的需求,某程序(进程)在运行的时候可能挂掉,需要去监控该程序,并在它挂掉的时候重启之,确保该程序能一直运行。比如土net就经常挂,需要监控程序去监控。Linux下面似乎有守护进程的概念,Windows下面其实也很简单,dos批处理就可以搞定 :-)
需要了解如下几个命令,tasklist + find,ping。tasklist是列出所有进程,可以指定只列出某用户的进程,用/FI参数过滤。find /C可以去tasklist的结果中查找指定进程名,并输出个数。
还有个问题是如何设置每隔一段时间去检测进程是否在运行,我用的是ping命令自带的延迟参数-w,将IP地址设置成一个空地址,比如0.0.0.1,这样该命令会一直ping,直到一定n*w 毫秒后才返回(n和w分别是参数-n和-w指定的值)。
示例程序如下,红色部分需要根据需求进行替换,enjoy it!
***********************************************************************
:RESTART
tasklist /FI "username eq administrator" | find /C "test.exe" > temp.txt
set /p num= < temp.txt
del /F temp.txt
echo %num%
if "%num%" == "0"        start /D "E:\test\" test.exe
ping -n 10 -w 2000 0.0.0.1 > temp.txt
del /F temp.txt
goto RESTART
************************************************************************

注意1:goto语句是将监控程序设置成死循环,哇咔咔。
注意2:可以用start /D path program去异步调用program程序,也就是不等program指定完毕就执行下面的语句,因此可以设置固定间隔(n*w毫秒)去监测。
       如果用call program则是同步调用,会等待program执行完毕,这样延迟就用不着了
补充:将该bat转换成exe文件后,exe文件不能命名为*test*。

来源:
http://blog.chinaunix.net/u3/103318/showart_2070806.html
Python打开串口的代码:
http://lvxinwei.sinaapp.com/1045.html
下载地址:http://sourceforge.net/projects/pyserial/files/

直接下载地址:
http://downloads.sourceforge.net/project/pyserial/pyserial/2.5/pyserial-2.5.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpyserial%2Ffiles%2Fpyserial%2F2.5%2F&ts=1344675974&use_mirror=nchc
安装方法:
python setup.py install
easy_install pyserial
是否安装成功:
import serial

ghostwwl -- 补充一点点 那个串口的pyserial模块到http://sourceforge.net/project/showfiles.php?group_id=46487去下 不然会no model named .....
Border -- 从 http://pyserial.cvs.sourceforge.net/pyserial/pyserial/ 得到些例子。

Python 串口设备应用,多线程:http://www.cnblogs.com/dainiao01/archive/2010/09/15/2250195.html

关于python 向串口发送命令(16进制)

import serial_port
port = serial_port.create('COM1', 9600, 8, 'none', 1, 0)

port.write('\x02\x00\x00\x00\x00\x02')


很神奇 ^ ^,串口终端程序 = vte + serial,实际上就是重写了vte的commit信号响应函数,再把串口的输入输出到vte上...



#!/usr/bin/env python
import gtk
import vte
from serial import Serial
import gobject
    
def WriteSerial(self, data, size):
    if ser.isOpen(): ser.write(data)
def ReadSerial(dev, conf):
    data = ser.read(1024)
    if not data:
        print "not data"
    v.feed(data)
    return True

if __name__ == '__main__':
    global ser
    ser = Serial(port='/dev/ttyUSB0', baudrate=115200)
    ser.setTimeout(0)
    v = vte.Terminal ()
    v.connect ("child-exited", lambda term: gtk.main_quit())
    v.connect("commit", WriteSerial)
    gobject.io_add_watch(ser, gobject.IO_IN, ReadSerial)
    window = gtk.Window()
    window.add(v)
    window.connect('delete-event', lambda window, event: gtk.main_quit())
    window.show_all()
    gtk.main()




这段代码发送的16进制是以ASCII码发送的还是UNICODE码发送的??

如果是前一种,那么后一种方式应该怎么实现?



如果你在Python实际应用的过程中仍然不清楚Python串口是如何使用时,你可以参考以下的文章对Python串口的使用有一个正确的了解,以下就是文章的相关内容的介绍,望你会有所收获。

为了使用Python串口,首先需要下载相关模块:


1. pyserial   2. pywin32 (http://sourceforge.net/projects/pywin32/)  

google “Python串口 操作”关键字,找到相关python代码,发送数据可用chr和pack组装处理,如:


snd = '' snd += chr(97)  data = 0x12345678 snd += pack.('i', data)  snd += chr(0x64)  self.l_serial.write(snd);  
#发送的数据是(16进制):61 78 56 34 12 64接收的数据用ord函数,将字节内容变为整数,进行判断处理。如:

if ord(recv[2])== 0x01:  
判断recv[2]是否是0x01.注意:不能这样比较


if recv[2] == 'a':  pass  
也不能这样比较


if recv[2] == 0x97:  pass  

以上的文章就是对Python串口 的使用的部分介绍。

参考:http://blog.csdn.net/asmc51/article/details/3068950

  <?php
  class splash {
   var $gui = null;
   var $times = null;
   function splash() {
   $this->gui = array(); // 初始化
   $this->times = 0;
   }
   /**
   * 运行主程序
   */
   function run() {
   $this->gui['splash'] = &new GtkWindow(GTK_WINDOW_POPUP);
   $this->gui['splash']->set_position(GTK_WIN_POS_CENTER);
   $this->gui['splash']->set_usize(365, 221);
   $this->gui['vbox'] = &new GtkVbox(false, 0);
   // load pixmap
   list($pixmap, $mask) = Gdk::pixmap_create_from_xpm($this->gui['splash']->window, null, 'splash.xpm');
   $splash = &new GtkPixmap($pixmap, $mask);
  
   // add the image to the box
   $this->gui['vbox']->add($splash);
  
   // load loading label
   $this->gui['loading'] = &new GtkLabel();
   // add the loading label to the box
   $this->gui['vbox']->add($this->gui['loading']);
   // add the box to the window
   $this->gui['splash']->add($this->gui['vbox']);
   $this->gui['splash']->show_all();
   $this->loading();
   Gtk::main();
   }
  
   /**
   * Loging ...
   */
   function loading() {
   $this->times ++;
   $this->gui['loading']->set_text('Loading .' . str_repeat('.', $this->times));
   // 刷新屏幕
   while (gtk::events_pending()) gtk::main_iteration();
   $loadingid = Gtk::timeout_add(1000, array(&$this, 'loading'));
   // 运行4次退出
   if($this->times > 4) {
   Gtk::main_quit();
   Gtk::timeout_remove($loadingid);
   }
   }
  }
  $splash = &new splash();
  $splash->run();
  ?>

  --with-big-tables   /启用对大于4G的数据库的支持



编译安装mysql4.0.26,为了保证所所有的重要数据全部都在/var分区下,需要手工指定mysql的默认数据库的路径。
  查看了一下:
  ./configure --help发现里面有个:
  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
  --localstatedir=DIR modifiable single-machine data [PREFIX/var]

  由于数据库默认应该是保存在PREFIX/var下面的,根据上面这个提示,应该是设置
  --localstatedir这个选项,于是:
  ./configure
  --localstatedir=/var/mysql
  --prefix=/usr/local/mysql
  --with-mysqld-user=mysql  /制定mysql的daemon的user
  --with-big-tables   /启用对大于4G的数据库的支持
  make
  make install
  cp support-files/my-medium.cnf /etc/my.cnf
  bin/mysql_install_db --user=mysql

  发现/var路径下生成了mysql_db目录,说明指定此参数正确,OK!
如何查询mysql里某张表所有记录所占内存?我想比较一下innodb表和myisam表所占用内存大小,谢谢

mysql> show table status \G;
*************************** 1. row ***************************
           Name: innodb
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
Auto_increment: 1
    Create_time: 2010-10-07 23:21:25
    Update_time: NULL
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
Create_options:
        Comment: InnoDB free: 4096 kB
1 row in set (0.00 sec)

ERROR:
No query specified


来源:http://www.soidc.net/discuss/14/090621/15/719934_1.html
如何查询mysql里某张表所有记录所占内存?我想比较一下innodb表和myisam表所占用内存大小,谢谢

mysql> show table status \G;
*************************** 1. row ***************************
           Name: innodb
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
Auto_increment: 1
    Create_time: 2010-10-07 23:21:25
    Update_time: NULL
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
Create_options:
        Comment: InnoDB free: 4096 kB
1 row in set (0.00 sec)

ERROR:
No query specified


来源:http://www.soidc.net/discuss/14/090621/15/719934_1.html
简介:这是MySQL不支持InnoDB的解决方法的详细页面,介绍了和mysql,有关的知识,加入收藏请按键盘ctrl+D,谢谢大家的观看!要查看更多有关信息,请点击此处

G一下后,解决如下:
/var/lib/mysql目录下,删除ibdata1、ib_logfile1、 ib_logfile0,然后重启MySql让其重建以上文件:
mysqladmin -uroot -p shutdown
sudo mysqld_safe &
搞定! 阅读全文
Mysql升级脚本,每次升级均得用到:
./mysql_upgrade -p
Enter password:
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
......
Upgrade process completed successfully.
Checking if update is needed.
参考:http://dev.mysql.com/doc/refman/5.7/en/upgrading-from-previous-series.html
如果不升级会出现什么情况?尽管运行了,但是用phpMyadmin后会出现如下错误:
MySQL 返回: 文档
#1146 - Table 'information_schema.CHARACTER_SETS' doesn't exist
information_schema这个库,`CHARACTER_SETS`这个表,因为升级后没有这个表了,需要运行./mysql_upgrade -p 在information_schema库里生成一系列的表。


101007 22:30:31 [ERROR] Can't open the mysql.plugin table. Please run the mysql_upgrade script to create it.
101007 22:30:31 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
101007 22:30:31  mysqld ended

再源码下面执行,如下:
linux-Jack-nb4:~/webserver/mysql-5.1.12-beta # ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/var
Installing all prepared tables
Fill help tables
Linux:
bin/mysql_install_db --user=mysql  --datadir=/data/db/mysql

To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h linux-Jack-nb4 password 'new-password'
See the manual for more instructions.

NOTE:  If you are upgrading from a MySQL <= 3.22.10 you should run
the /usr/local/mysql/bin/mysql_fix_privilege_tables. Otherwise you will not be
able to use the new GRANT command!

You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &

Please report any problems with the /usr/local/mysql/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com



Mysql运行Ok了:
linux-Jack-nb4:~/webserver/mysql-5.1.12-beta # ps aux|grep mysql
root      5515  0.0  0.1   2804  1312 pts/0    S    22:40   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe
mysql     5566  0.3  1.6  81984 13132 pts/0    Sl   22:40   0:01 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql --pid-file=/usr/local/mysql/var/linux-Jack-nb4.pid --log-error=/usr/local/mysql/var/linux-Jack-nb4.err --socket=/tmp/mysql.sock --port=3306
前面指定了DB位置,后面就会对于那个--datadir=位置所在:
/usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql-/ --user=mysql --pid-file=/data/mysql-//linux-jack-xiang.pid --log-error=/data/mysql-//linux-jack-xiang.err --socket=/tmp/mysql.sock --port=3306
root      5606  0.0  0.0   1900   652 pts/0    S+   22:47   0:00 grep mysql



在MYSQL启动老失败即:Starting MySQL.Manager of pid-file quit without updating file.[FAILED]
查看错误日志显示:mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
/usr/local/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist

Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
InnoDB: The first specified data file ./ibdata1 did not exist:
/etc/my.cnf


bind-address    = linux-Jack-nb4

101007 16:05:10  mysqld started
101007 16:05:25 [ERROR] Can't start server: cannot resolve hostname!: Success
101007 16:05:25  mysqld ended


先跑 ifconfig 得到 IP ,
再 hostname 得到貴主機的 FQDN.

然後寫進 /etc/hosts 内.
或確定所查的 dns 能夠解釋.


特别注意:bind-address 和 /etc/hosts里面保持一致:
127.0.0.1       localhost linux-Jack-nb4

(Ⅴ 你用智能ABC输入,按“V”再按2,然后往下选,就会看见这个符号了,包括1到9的罗马数字符号)


罗马数字一共有七个:
I(1),V(5),X(10),L(50),C(100),D(500),M(1000)。

罗马数字是欧洲在阿拉伯数字传入之前使用的一种数码。罗马数字采用七个罗马字母作数字,即Ⅰ(1)、X(10)、C (100)、M (1000),V (5)、L(50)、D (500)。记数的方法:(1)相同的数字连写,所表示的数等于这些数字相加得到的数,如, Ⅲ = 3;(2)小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如,Ⅷ = 8,Ⅻ = 12;(3)小的数字,(限于Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如,Ⅳ = 4,Ⅸ = 9;(4)在一个数的上面画一条横线,表示这个数增值 1 000 倍,如 Ⅻ = 12 000 。罗马数字的组数规则,有几条须注意掌握;(1)基本数字Ⅰ、X 、C 中的任何一个,自身连用构成数目,或者放在大数的右边连用构成数目,都不能超过三个;放在大数的左边只能用一个。(2)不能把基本数字 V 、L 、D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目;放在大数的右边采用相加的方式构成数目,只能使用一个。(3)V 和 X 左边的小数字只能用Ⅰ。(4)L 和 C 左边的小数字只能用×。(5)D 和 M 左 边的小数字只能用 C 。用罗马数字记较大的数非常麻烦, 所以已不常用了。在中文出版物中,罗马数字主要用于某些代码,如产品型号等。计算机 ASCⅡ码收录有合体的罗马数字 1~12 。

I, 1
II, 2
III, 3
IV, 4
V, 5
VI, 6
VII, 7
VIII, 8
IX, 9
X, 10
XI, 11
XII, 12
XIII, 13
XIV, 14
XV, 15
XVI, 16
XVII, 17
XVIII, 18
XIX, 19
XX, 20
XXI, 21
XXII, 22
XXV, 25
XXIX, 29
XXX, 30
XXXI, 31
XXXIV, 34
XXXV, 35
XXXIX, 39
XL, 40
L, 50
LI, 51
LV, 55
LX, 60
LXV, 65
LXX, 70
LXXX, 80
XC, 90
XCIII, 93
XCV, 95
XCVIII, 98
IC, 99
C, 100
CC, 200
CCC, 300
CD, 400
D, 500
DC, 600
DCC, 700
DCCC, 800
CM, 900
M, 1000
MC, 1100
MCD, 1400
MD, 1500
MDC, 1600
MDCLXVI, 1666
MDCCCLXXXVIII, 1888
MDCCCXCIX, 1899
MCM, 1900
MCMLXXVI, 1976
MCMLXXXIV, 1984
MCMXC, 1990
MM, 2000
InnoDb 介绍:

  InnoDb 存储引擎,支持事务,行锁,外键.InnoDb 设计用来处理大数据量时提供最好的

  性能.

  InnoDb 提供自己的缓存(buffer pool) 还缓存数据和索引.innodb 把数据和索引存放

  到表空间(tablespace) ,表空间是几个磁盘文件或者是原是设备文件(raw disk). 它

  不像MyISAM 存储引擎,每个表只是一个文件.(这样在某些系统下最大2G限制). 而Innodb

  没有此限制,可以无限扩展.

  Mysql4.0 的以后版本都支持innodb 存储.

  如果你的MySQL不支持InnoDB存储引擎,请按照如下的步骤进行修改。

  1.关闭MySQL数据库

  2.修改my.ini文件,把skip-innodb这行注释掉

  3.打开MySQL数据库

  即可。


用源码 包安装mysql 5.1.34 发现show engines;里没有innodb


cp /data/mysql/share/mysql/my-innodb-heavy-4G.cnf    到/etc/my.cnf

删除mysql数据目录里的删除ibdata1、ib_logfile1、 ib_logfile0 等文件,然后,重启mysql
每一次会出错,在重启一次就OK了
.
mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                     | NO          | NO   | NO         |
| CSV                    | YES     | CSV storage engine                                                 | NO           | NO   | NO        |
| MyISAM            | DEFAULT | Default engine as of MySQL 3.23 with great performance      | NO    NO   | NO         |
| InnoDB               | YES           | Supports transactions, row-level locking, and foreign keys      | YES  YES  | YES        |
| MEMORY          | YES          | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5 rows in set (0.00 sec)


让mysql默认存储引擎为Innodb
修改/etc/my.cnf
[mysqld]
default-storage-enginie=innodb然后重启mysql数据库
./mysqladmin shutdown
./mysqld_safe &mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                         | NO           | NO   | NO         |
| MyISAM     | YES     | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |
| InnoDB     | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
进入mysql 用show engines;如上图所示,Innodb已经支持了

我在 mysql 中输入 show variables like 'have_%';
mysql> show variables like 'have_%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| have_archive               | NO    |
| have_blackhole_engine      | NO    |
| have_compress              | YES   |
| have_crypt                 | YES   |
| have_csv                   | YES   |
| have_dynamic_loading       | NO    |
| have_example_engine        | NO    |
| have_federated_engine      | NO    |
| have_geometry              | YES   |
| have_innodb                | YES   |
| have_merge                 | YES   |
| have_ndbcluster            | NO    |
| have_openssl               | NO    |
| have_partitioning          | NO    |
| have_query_cache           | YES   |
| have_row_based_replication | YES   |
| have_rtree_keys            | YES   |
| have_symlink               | YES   |
+----------------------------+-------+
18 rows in set (0.00 sec)


看到 have_innodb 是 disable 的。配置文件在 /etc/my.cnf 请问如何设置才能使用 innodb 让 mysql 支持事务?
你编译的时候没加--disable-innodb吧?要没有的话你把my.cnf里的关于innodb的选项打开就可以了吧。
注意:建库时也要指定innodb


来源:http://cqfish.blog.51cto.com/622299/159156
http://tech.ddvip.com/2009-06/1244807603123509.html
centos最近发布了5.5版本,但AMP软件包并没有升级(Apache2.2.3/php5.1.6/mysql.5.0.40);所以为了能使用最新稳定版,需要自己编译安装。下面是具体的安装步骤,对于优化细节暂不做多的考虑。阅读全文
此文继Centos5.5下编译安装AMP环境而来,编译安装好AMP环境后,默认的配置,并不是最优的性能,很多参数需要根据网站的不同状况进行调节。阅读全文
Windows XP/Server2003几乎都是32位的操作系统  使用 Winmsd.exe 工具检查处理器
  1. 单击“开始”,然后单击“运行”。
  2. 在“打开”框中,键入 winmsd.exe,然后单击“确定”。
  3. 在“项目”下面的右窗格中找到“处理器”。注意数值。
  ? 如果“处理器”对应的值是以“x86”开头的,则该计算机正在运行的是 Windows 操作系统的 32 位版本。
  ? 如果“处理器”对应的值是以“ia64”开头的,则该计算机正在运行的是 Windows 操作系统的 64 位版本。
  winmsd.exe   这个命令非常好!!!记下
分页: 160/339 第一页 上页 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 下页 最后页 [ 显示模式: 摘要 | 列表 ]