祝大家国庆节和中秋节双节快乐!祝学习日记上线两周年

国庆加中秋,又是双节七天长假,祝大家节日快乐,天天快乐!

学习日记大概是在2004年中秋节上线的,在网上已经跑了两年整了。

感谢所有支持和帮助过学习日记的朋友们!

新的一周年开始了,我们正在进行网站的改版。希望学习日记能真正成为一个有用的东西。对朋友们有所助益。

值得纪念的下午:2006年9月30日,女儿受表扬

因为我们的女儿比较调皮,在原来的幼儿园里被老师看作“不讲道理”的孩子。所以,上了一年幼儿园,还没有得到什么老师的表扬(除了那种小红花)。

但是,今天下午,据她外婆讲,女儿在新幼儿园时真正得到了老师一次隆重的表扬:老师把她一个人叫上讲台,对全班同学说女儿国庆节在班上的舞蹈和唱歌表演中表现出色,大家鼓掌欢迎。于是,下边的小朋友们全都啪啪的拍起手来了。而女儿则昂首挺胸,很是自豪。

我知道是昨天上午进行的班上集体表演。早上送她去幼儿园时因为她有点生病,状态很不好,我给她带手上的花时还不让带左手。我走时她还在哭鼻子。因为担心是不是生病加重了,还给家里打了电话,让去看看孩子,如果情况不好就把她抱到医院去看看...。结果没有想到,孩子后来上场的表现如此之好。唱歌声音响亮,跳舞也卖力。真是想不到呀。

昨天的表演还有一个小插曲。幼儿园的小朋友,女孩子头上要带花。女儿因为夏天怕热,头发理成了男头,结果就带不上花了,让她跟男孩子一样的把花戴在别的位置,站也跟男孩子站在一列。看来,以后要给她把头发留起了。不然,真成了假小子:)

孩子是需要多赞扬和鼓励的,特别是由衷的赞叹和鼓励,对树立孩子的自信心和健全的人格都有重要作用。在陈建翔主编的《家教新主张》系列丛书“父母是孩子的同龄人”中有相关的说法。

在Struts的html:select标签中显示默认值(转)

转自:http://www.theserverside.com/discussions/thread.tss?thread_id=35726

Render default value for html:select in STRUTS

Posted by: Jiao Yu on ?? 07, 2005 DIGG

Hello,

I am trying to render the default value for html:select with STRUTS, but can't get it work correctly.

----------------------------------------------------------

Here are the component I have:

The JSP page to render the html:select

<%@ taglib prefix="req" uri="/WEB-INF/taglibs-request.tld" %>

<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>

<%@ taglib prefix="fmt" uri="/WEB-INF/fmt.tld" %>

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<head><title>eQuation 2.0</title></head>

<body>

<html:form action="/mappingAction" >

<table>

<c:forEach var="line" items="${mappingForm.map.matchColumnList}" >

<TR>

<TD><c:out value="${line.databaseColumnNameLabel}"/></TD>

<TD><c:out value="${line.excelColumnPosition}"/></TD>

<TD>

<html:select name="line" property="excelColumnPosition"

multiple="false" size="5" value="${line.excelColumnPosition}" >

<html:option value="" >No Match</html:option>

<html:optionsCollection name="mappingForm"

property="excelColumnList"

value="index"

label="columnName"/>

</html:select>

</TD>

</TR>

</c:forEach>

</table>

<html:submit value="Process"/>

</html:form>

</body>

----------------------------------------------------------

Here is the form setction for my STRUTS configuration xml:

    <form-bean name="mappingForm" type="org.apache.struts.action.DynaActionForm" >

     <form-property name="excelColumnList" type="rawdata.model.ExcelColumnNameBean[]"/>

     <form-property name="matchColumnList" type="rawdata.model.ColumnMatchBean[]" />

----------------------------------------------------------

Here are the definitions for the two beans used in the mappingForm:

public class ColumnMatchBean {

private String excelColumnName;

private String recommmendedDatabaseColumnName;

private String databaseColumnNameLabel;

private int excelColumnPosition;

...}

public class ExcelColumnNameBean {

private String columnName;

private int index;

...}

----------------------------------------------------------

Here is the action mapping used to populate the mappingForm and render the form in a JSP:

<action

            path="/loadMatchingColumn"

            type="rawdata.LoadMatchingColumnAction"

name="mappingForm"

attribute="mappingForm"

scope="session"

>

<forward name="success"

path="/../upload/showExcelColumns.jsp"

redirect="false"/>

</action>

----------------------------------------------

In LoadMatchingColumnAction, I populated both properties of the mappingForm,

For excelColumnList ( Array of ExcelColumnNameBean), I populated a couple of ExcelColumnNameBean ( with both columnName and index populated),

For matchColumnList ( Array of ColumnMatchBean, I populated a couple of ColumnMatchBean, ( with only recommmendedDatabaseColumnName and databaseColumnNameLabel populated),

Then I the showExcelColumns.jsp, I am going to render a couple of select lists with corresponding labels, see the details of the JSP at the beginning of this POST.

Here my questions come,

1)I can render the couple of select lists successfully, but for each of them, I would like to set a default value, I can't make this to work, although I set the value attribute in the select tag:

<html:select name="line" property="excelColumnPosition"

multiple="false" size="5" value="${line.excelColumnPosition}" >

I wrap select tag with C:foreach tags to render a group of select lists, and the problem seems to happen in

value="${line.excelColumnPosition}"

the correct predefined value can't be retrieved,

If I change "${line.excelColumnPosition}" to a specific number, let's say "2", then it works fine.

How can I get the correct value from line.excelColumnPosition?

2)My second question is: the select list rendered in the JSP page doesn't render a drop down list, but a select box, how can I make it a select drop down list?

Hope I have provided enough and clear information to explain my puzzles?

Thanks so much and have a good night,

Jiao

  Message #180699 Post reply Post reply Post reply Go to top Go to top Go to top

Check html:optionsCollection

Posted by: Cliff Liang on ?? 08, 2005 in response to Message #180569

I think you check the following and its tag doc first.

<html:optionsCollection name="mappingForm"

property="excelColumnList"

value="index"

label="columnName"/>

I guess each item in excelColumnList is the pair of index and value. You set value="index", so when you change "${line.excelColumnPosition}" to "2", it works fine.

Try to change to value="value", which is the value of excelColumnPosition is from.

Of course, html:select can be used for drop down list.

Hope it can help you.

Cliff Liang

  Message #180705 Post reply Post reply Post reply Go to top Go to top Go to top

RE:Render default value for html:select in STRUTS

Posted by: Jiao Yu on ?? 09, 2005 in response to Message #180569

Cliff,

Thanks for your reply. But I don't think that's the problem, since I already identified the issue under the help of a teammate.

The major issue here is that STRUTS doesn't work well with EL, so ${line.excelColumnPosition}" doesn't work well.

He suggests following options to fix the problem:

a)You must use runtime expression in the value parameter. I have not tested following code.

 

<bean:define id="defaultValue" name="line" property="excelColumnPosition"/>

<html:select name="line" property="excelColumnPosition" value='<%= defaultValue %>' >

b) Use Struts-EL library

c) Tomcat bundled with JBoss 4.0.2 is 5.5.x. It is Servlet 2.4 and JSP 2.0 compliant. You could change the web.xml to specify the 2.4 version of the servlet specification. EL expresions would be interpreted by the servlet container - Tomcat. The version 2.2 in web.xml does not interpret EL expressions for compatibility reasons.

 

Changing follow code:

“<!DOCTYPE web-app

  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"

  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">”

To

 

<?xml version="1.0" encoding="ISO-8859-1"?>

 

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

        version="2.4">

    ....

</web-app>

------------------------------------------

To dropdown list issue is also resolved, just omit the multiple attribute for select.

Thanks again and happy programming.

Jiao

  Message #180707 Post reply Post reply Post reply Go to top Go to top Go to top

Render default value for html:select in STRUTS

Posted by: Jiao Yu on ?? 09, 2005 in response to Message #180569

Hello,

Another tricky thing is :

The var attribute (mathchColumnList)in C:forEach tag, the property after map. for the items attribute (matchColumnList) in the C:foeEach tag, and the name attribute for the html:select tag should be all the same, otherwise, you can't get the POST data in the following action.

<c:forEach var="matchColumnList" items="${mappingForm.map.matchColumnList}" >

<TR>

<TD><c:out value="${matchColumnList.databaseColumnNameLabel}"/></TD>

<TD><c:out value="${matchColumnList.excelColumnPosition}"/></TD>

<TD>

<html:select name="matchColumnList" property="excelColumnPosition"

multiple="false" size="5" value="${matchColumnList.excelColumnPosition}" >

<html:option value="" >No Match</html:option>

<html:optionsCollection name="mappingForm"

property="excelColumnList"

value="index"

label="columnName"/>

</html:select>

Have a good night,

Jiao

走出自己的思维,多向别人学习

网上成功的网站太多了,充满智慧的人也不少。我要走出自己的思维,多与人交流,多向别人学习。比如:多上论坛、blog关注别人的问题和感受。尽自己的力回答一些入门级问题(因为我就是入门级水平)。我想,智慧与智慧的交流对大家都是一种好的状态。我自己需要践行这种理念和状态。

双击驱动器打不开磁盘,出现打开方式对话框

今天在帮一位朋友看电脑时,出现“双击驱动器打不开磁盘,出现打开方式对话框”的怪事,如下图的E盘。这位朋友的电脑中C、D盘双击能打开,但是E,F,G盘就会出现双击打不开的情况,非要右键单击盘符,选择“打开”才能打开磁盘。

朋友原来装的是windows xp sp2,系统中就有这个毛病。我今天去重装了windows xp sp2系统仍是如此。不知是怎么一回事,在网上搜索了下面的地址有相关内容,试了一些方法,没有成功,不是http://www.xiaojb.com/介绍的“AdobeR.exe病毒”和“rose病毒”,只有放在那里了。

好像重新装过的系统不应该有病毒吧。

下面这个方法还没有试,可以试一下。


4、关闭自动播放(xp home版及2000系统没有组策略)

开始 运行 输入 gpedit.msc 回车

组策略 “本地计算机”策略 计算机配置 管理模板 系统

然后再右边的“关闭自动播放”上双击

在弹出的属性框中 选择 “已启用” 关闭自动播放中选择“适用于所有驱动器”



双击驱动器打不开磁盘,出现打开方式对话框图例

一些相关解决方法的网址:

http://www.xiaojb.com/

http://www.7works.com.cn/article.asp?id=223

感叹一下,windows的系统现在用起来真的让人不放心呀,在我接触的好几台windows xp电脑中,安个ewido随便一查,往往就是上百个木马、病毒或是什么有害的玩意儿。另外,其他朋友下的卡巴斯基在系统上查毒往往也有数量巨大的木马、病毒。

现在,搞得要登录一个重要的网页都不敢在windows下面了。我一般都在linux下登录这些网页了。在linux下使用,真的让人觉得比windows踏实多了,杀毒、防木马、防流氓程序,这些在windows下必备的基本功力,在linux下基本上用不着。虽说,linux下现在也不是洁白无暇,但是,我使用linux大概有9个月了吧,还没有碰到上面这些问题。

我还感觉到这些病毒、木马已经不像它们的先辈们,好多是为显示黑客们的威力而生。现在的病毒、木马许多都是窃取密码、锁定网站、强行向用户展示广告。也就是说,他们也走经济利益这条线了。这就是钱啊,谁不想,可就是想得让众人讨厌,成了过街老鼠,人人喊打。他们也许忘了一句古训:君子爱财,取之有道。

提交事件21,建了数据库表和bean,database 操作类

思路来自: 明确网站定位,增加学习日记目标分组功能

向开源社区提交了issue 21:

http://learndiary.tigris.org/issues/show_bug.cgi?id=21

The all different goals can be organized by group, in this way, user can get the

outline of a website which running LearnDiary.

Add some Top 10 statistical data of website, such as top 10 newly created

diaries, top 10 most posting diaries' user, etc..

今天完成了相关数据库表建立,一个bean模型,和bean模型的数据库存取类。延续原来的入门级设计方法,快速实现需要的功能。

还是以前的思路,软件应用为先。

Mysql数据库基本操作概要(转)

虽然一直用的是mysql,可是对它的掌握并不很深,经常为一个基础的知识点上网查找。下面这篇帖子很全面和适用,收藏在此。感谢原作者。

转自:http://www.matrix.org.cn/blog/wenic705/archives/001511.html

Mysql数据库学习

写程序经常用到,写个接连就完事了,没去好好动过Mysql数据库。

今天有空仔细学习Mysql,做个笔记,自己以后看

我是在linix下操作数据库的,window下也差不多,不过在windows有人写好数据库管理软件,下一个窗口化操作很方便。

连接数据库:命令: mysql [host] –u [user] –p 提示密码输入后输入正确密码,OK,登陆进来了。

我事先不清楚这个数据库里有些什么,只好一个一个命令敲了。

查看数据库:命令: show databases 列出数据库服务器上所有数据库;

使用数据库:命令: use [database name] 切换到需要操作的数据库;

查看表: 命令: show tables 列出该数据库的所有表;

查看表结构:命令:describe [table name] 查看表结构;

表结构清楚了,那就可以开始进行操作了。

下面是基础资料:

  (一)字段类型

  1.INT[(M)]

  正常大小整数类型

  2.DOUBLE[(M,D)] [ZEROFILL]

  正常大小(双精密)浮点数字类型

  3.DATE

  日期类型。支持的范围是'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式来显示DATE值,但是允许你使用字符串或数字把值赋给  DATE列

  4.CHAR(M)

  定长字符串类型,当存储时,总是是用空格填满右边到指定的长度

  5.BLOB TEXT   BLOB或TEXT类型,最大长度为65535(2^16-1)个字符。

  6.VARCHAR  变长字符串类型,最常用的类型。

  (二)基本操作

  1:显示数据库

   mysql>SHOW DATABASES;

  2:当前选择的数据库,

   mysql> SELECT DATABASE();

   +------------+

   | DATABASE() |

   +------------+

   | test |

   +------------+

  3.当前数据库包含的表信息:

   mysql> SHOW TABLES;

   +---------------------+

   | Tables in test |

   +---------------------+

   | mytable1 |

   | mytable2 |

   +---------------------+

  4.获取表结构

   mysql> desc mytable1;

   +---------+-------------+------+-----+---------+-------+

   | Field | Type | Null | Key | Default | Extra |

   +---------+-------------+------+-----+---------+-------+

   | s1 | varchar(20) | YES | | NULL | |

   +---------+-------------+------+-----+---------+-------+

  5.创建表

  表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联。创建表的基本语法如下:

   create table table_name

   (column_name datatype {identity |null|not null},

   …)

  其中参数table_name和column_name必须满足用户数据库中的识别器(identifier)的要求,参数datatype是一个标准的SQL类型或由用户数  据库提供的类型。用户要使用non-null从句为各字段输入数据。

  create table还有一些其他选项,如创建临时表和使用select子句从其他的表中读取某些字段组成新表等。还有,在创建表是可用PRIMARY   KEY、KEY、INDEX等标识符设定某些字段为主键或索引等。书写上要注意:在一对圆括号里的列出完整的字段清单。字段名间用逗号隔开  。字段名间的逗号后要加一个空格。最后一个字段名后不用逗号。所有的SQL陈述都以分号";"结束。

  例:

   mysql>CREATE TABLE guest (name varchar(10),sex varchar(2),age int(3),career varchar(10));

  6.创建索引

  索引用于对数据库的查询。一般数据库建有多种索引方案,每种方案都精于某一特定的查询类。索引可以加速对数据库的查询过程。创建  索引的基本语法如下:

   create index index_name

   on table_name (col_name[(length)],... )

  例:

   mysql> CREATE INDEX number ON guest (number(10));

  7.执行查询

  查询是使用最多的SQL命令。查询数据库需要凭借结构、索引和字段类型等因素。大多数数据库含有一个优化器(optimizer),把用户的查  询语句转换成可选的形式,以提高查询效率。

  值得注意的是MySQL不支持SQL92标准的嵌套的where子句,即它只支持一个where子句。其基本语法如下:

   SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY]

   [DISTINCT | DISTINCTROW | ALL]

   select_expression,...

   [INTO {OUTFILE | DUMPFILE} 'file_name' export_options]

   [FROM table_references

   [WHERE where_definition]

   [GROUP BY col_name,...]

   [HAVING where_definition]

   [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]

   [LIMIT [offset,] rows] //分页

   [PROCEDURE procedure_name] ]

  其中where从句是定义选择标准的地方,where_definition可以有不同的格式,但都遵循下面的形式:

  字段名操作表达式

  字段名操作字段名

  在第一种形式下,标准把字段的值与表达式进行比较;在第二种形式下,把两个字段的值进行比较。根据所比较的数据类型,       search_condition中的操作可能选以下几种:

   =检查是否相等

   !=检查是否不等

   > (或>=)检查左边值是否大于(或大于等于)右边值

   < (或<=)检查左边值是否小于(或小于等于)右边值

   [not] between检查左边值是否在某个范围内

   [not] in检查左边是否某个特定集的成员

   [not] like检查左边是否为右边的子串

   is [not] null检查左边是否为空值

  在这里,可以用通配符_代表任何一个字符,%代表任何字符串。使用关键字、和可以生成复杂的词,它们运行检查时使用  布尔表达式的多重标准集。

  例:

   mysql> select t1.name, t2.salary from employee AS t1, info AS t2swherest1.name = t2.name;

   mysql> select college, region, seed from tournament

   ORDER BY region, seed;

   mysql> select col_name from tbl_nameswherescol_name > 0;

  8.改变表结构

  在数据库的使用过程中,有时需要改变它的表结构,包括改变字段名,甚至改变不同数据库字段间的关系。可以实现上述改变的命令是   alter,其基本语法如下:

  alter table table_name alter_spec [, alter_spec ...]

  例:

   mysql> alter table dbname add column userid int(11) not null primary key auto_increment;

  这样,就在表dbname中添加了一个字段userid,类型为int(11)。

  9.修改表中数据

  在使用数据库过程中,往往要修改其表中的数据,比如往表中添加新数据,删除表中原有数据,或对表中原有数据进行更改。它们的基本  语法如下:

  数据添加:

   insert [into] table_name [(column(s))]

   values (expression(s))

  例:

   mysql>insert into mydatabase values('php','mysql','asp','sqlserver','jsp','oracle');

10.表的数据更新

  (1)一次修改一个字段,再次注意语法。文本需要加引号但数字不要。

   mysql>update table01 set field03='new info' where field01=‘1’;

   Query OK, 1 row affected (0.00 sec)

  (2)一次改变多个字段,记住在每一个更新的字段间用逗号隔开。

   mysql>update table01 set field04=19991022, field05=062218 where field01=1;

   Query OK, 1 row affected (0.00 sec)

  (3)一次更新多个数据

   mysql>update table01 set field05=152901 where field04>19990101;

   Query OK, 3 rows affected (0.00 sec)

  11.删除数据

   mysql>delete from table01 where field01=3;

   Query OK, 1 row affected (0.00 sec)

  12.导入数据库表

   (1)创建.sql文件

   (2)先产生一个库如auction.c:mysql in>mysqladmin -u root -p creat auction,会提示输入密码,然后成功创建。

   (3)导入auction.sql文件

    c:mysql in>mysql -u root -p auction < auction.sql。

   通过以上操作,就可以创建了一个数据库auction以及其中的一个表auction。

  13.mysql数据库的授权

   mysql>grant select,insert,delete,create,drop

   on *.* (或test.*/user.*/..)

   to用户名@localhost

   identified by '密码';

  如:新建一个用户帐号以便可以访问数据库,需要进行如下操作:

   mysql> grant usage

   -> ON test.*

   -> TO testuser@localhost;

   Query OK, 0 rows affected (0.15 sec)

  此后就创建了一个新用户叫:testuser,这个用户只能从localhost连接到数据库并可以连接到test数据库。下一步,我们必须指定     testuser这个用户可以执行哪些操作:

   mysql> GRANT select, insert, delete,update

   -> ON test.*

   -> TO testuser@localhost;

   Query OK, 0 rows affected (0.00 sec)

  此操作使testuser能够在每一个test数据库中的表执行SELECT,INSERT和DELETE以及UPDATE查询操作。现在我们结束操作并退出MySQL客户  程序:

   mysql> exit

   Bye

  14.授权MySQL用户密码

  MySQL数据库的默认用户名为"root"(MS SQL Server的sa相似),密码默认为空。在DOS提示符(注意,不是mysql提示符)下输入

  c:mysql in>"mysqladmin -u root -p password newpassword

  回车后会提示你输入原来的密码,由于原来密码为空,直接回车,root用户的密码便改为"newpassword"了。

为了找出包含正好5个字符的名字,使用“_”模式字符: //这个还是比较有意思的

mysql> SELECT * FROM pet WHERE name LIKE "_____";

12、备份和恢复

备份数据库staffer

c:mysqlbinmysqldump -uroot -proot staffer>e:staffer.sql

得到的staffer.sql是一个sql脚本,不包括建库的语句,所以你需要手工

创建数据库才可以导入

恢复数据库staffer,需要创建一个空库staffer

c:mysqlbinmysql -uroot -proot staffer

如果不希望后来手工创建staffer,可以

c:mysqlbinmysqldump -uroot -proot --databases staffer>e:staffer.sql

mysql -uroot -proot >e:staffer.sql

但这样的话系统种就不能存在staffer库,且无法导入其他名字的数据库, 当然你可以手工修改staffer.sql文件

13、从文本向数据库导入数据

1)使用工具c:mysqlbinmysqlimport

这个工具的作用是将文件导入到和去掉文件扩展名名字相同的表里,如

staffer.txt,staffer都是导入到staffer表中

常用选项及功能如下

-d or --delete 新数据导入数据表中之前删除数据数据表中的所有信息

-f or --force 不管是否遇到错误,mysqlimport将强制继续插入数据

-i or --ignore mysqlimport跳过或者忽略那些有相同唯一

关键字的行, 导入文件中的数据将被忽略。

-l or -lock-tables 数据被插入之前锁住表,这样就防止了,

你在更新数据库时,用户的查询和更新受到影响。

-r or -replace 这个选项与-i选项的作用相反;此选项将替代表中有相同唯一关键字的记录。

--fields-enclosed- by= char

指定文本文件中数据的记录时以什么括起的, 很多情况下 数据以双引号括起。 默认的情况下数据是没有被字符括起的。

--fields-terminated- by=char

指定各个数据的值之间的分隔符,在句号分隔的文件中, 分隔符是句号。您可以用此选项指定数据之间的分隔符。

默认的分隔符是跳格符(Tab)

--lines-terminated- by=str

此选项指定文本文件中行与行之间数据的分隔字符串或者字符。 默认的情况下mysqlimport以newline为行分隔符。

您可以选择用一个字符串来替代一个单个的字符:

一个新行或者一个回车。

mysqlimport命令常用的选项还有-v 显示版本(version),

-p 提示输入密码(password)等。

这个工具有个问题,无法忽略某些列,这样对我们的数据导入有很大的麻烦,虽然可以手工设置这个字段,但会出现莫名其妙的结果,我们做一个简单的示例

我们定义如下的depart_no.txt,保存在e盘,间隔为制表符t

10 10

11 11

12 24

执行如下命令

c:mysqlbinmysqlimport -uroot -proot staffer e:depart_pos.txt

在这里没有使用列的包围符号,分割采用默认的t,因为采用别的符号会有问题,不知道是不是windows的原因

2)Load Data INFILE file_name into table_name(column1_name,column2_name)

这个命令在mysql>提示符下使用,优点是可以指定列导入,示例如下

c:mysqlbinmysql -uroot -proot staffer

mysql>load data infile "e:/depart_no.txt" into depart_no(department_id,position_id);

这两个工具在Windows下使用都有问题,不知道是Windows的原因还是中文的问题, 而且不指定的列它产生了空值,这显然不是我们想要的,所以谨慎使用这些工具

上面的资料从网上收集起来的,对于mysql的管理比较详细了。

mysql索引表出错的处理方法(转帖)

昨天,把原来的mysql数据库挂到linux下出现了不能打开“*.MRI”文件的错误,下面是一个解决的方法。

转自:http://blog.9zi.com/post/1/531

迁移到mysql4.13,居然隔三差五的出现索引文件错

吓死我了,还没来得及做每日自动备份。

这几天差点白写。

还好mysql是多库方式,以表为文件单位存储。

ERROR 1016 (HY000): Can't open file: 'plog_articles.MYI' (errno: 145)

一看是index文件,应该可以修复。

于是乎google,就找到了答案

mysql -u dbuname -h dbhost -p dbname;

repair table plog_articles;

也可以命令行修复 myisamchk -r plog_articles

在mysql中避免保留字的影响

如果在mysql中的sql语句中使用了mysql的保留字,就会报错,例如下面:


mysql> CREATE TABLE group (

    -> groupID tinyint(2) unsigned NOT NULL auto_increment,

    -> groupName varchar(60) default NULL,

    -> groupPriority tinyint(1) unsigned default '0',

    -> PRIMARY KEY  (groupID)

    -> ) TYPE=InnoDB;

ERROR 1064: You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'group (

groupID tinyint(2) unsigned NOT NULL auto_increment,

gr

mysql>

上面就因为使用了保留字“group”出现错误。

只要把字段和表名用"`"引起来,就可以避免保留字的影响。这也是写规范的mysql语句的要求之一;

但是,为了避免不必要的麻烦,还是尽量不要在其中使用mysql的保留字。