Aaronlong31

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  12 Posts :: 3 Stories :: 17 Comments :: 0 Trackbacks

2010年1月27日 #

常见错误号对照表

MySQL error code SQLSTATE code Error message

1011 HY000 Error on delete of '%s' (errn %d)
1021 HY000 Disk full (%s); waiting for someone to free some space . . .
1022 23000 Can't write; duplicate key in table '%s'
1027 HY000 '%s' is locked against change
1036 HY000 Table '%s' is read only
1048 23000 Column '%s' cannot be null
1062 23000 Duplicate entry '%s' for key %d
1099 HY000 Table '%s' was locked with a READ lock and can't be updated
1100 HY000 Table '%s' was not locked with LOCK TABLES
1104 42000 The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
1106 42000 Incorrect parameters to procedure '%s'
1114 HY000 The table '%s' is full
1150 HY000 Delayed insert thread couldn't get requested lock for table %s
1165 HY000 INSERT DELAYED can't be used with table '%s' because it is locked with LOCK TABLES
1242 21000 Subquery returns more than 1 row
1263 22004 Column set to default value; NULL supplied to NOT NULL column '%s' at row %ld
1264 22003 Out of range value adjusted for column '%s' at row %ld
1265 1000 Data truncated for column '%s' at row %ld
1312 0A000 SELECT in a stored program must have INTO
1317 70100 Query execution was interrupted
1319 42000 Undefined CONDITION: %s
1325 24000 Cursor is already open
1326 24000 Cursor is not open
1328 HY000 Incorrect number of FETCH variables
1329 2000 No data to FETCH
1336 42000 USE is not allowed in a stored program
1337 42000 Variable or condition declaration after cursor or handler declaration
1338 42000 Cursor declaration after handler declaration
1339 20000 Case not found for CASE statement
1348 HY000 Column '%s' is not updatable
1357 HY000 Can't drop a %s from within another stored routine
1358 HY000 GOTO is not allowed in a stored program handler
1362 HY000 Updating of %s row is not allowed in %s trigger
1363 HY000 There is no %s row in %s trigger
posted @ 2010-08-11 11:13 Aaronlong31 阅读(834) | 评论 (0)编辑 收藏

之前一个监视应用的好工具JavaMelody,功能十分齐全,这次介绍个 
稍微小点的,专门为TOMCAT 而设计的。下面讲解其用法: 

1 下载: 
http://www.lambdaprobe.org/downloads/1.7/probe.1.7b.zip 
2 解压缩后,把probe.war放到TOMCAT的webapps下,设置server.xml 
的context 
3 设置用户如下,在tomcat_user.xml中 
   vi /usr/local/tomcat/conf//tomcat-users.xml 

<?xml version='1.0' encoding='utf-8'?> 
<tomcat-users> 
        <role rolename="manager"/> 
        <role rolename="standard"/> 
        <role rolename="tomcat"/> 
        <role rolename="admin"/> 
        <role rolename="role1"/> 
        <user username="tomcat" password="tomcat" roles="tomcat"/> 
        <user username="both" password="tomcat" roles="tomcat,role1"/> 
        <user username="probe" password="probe" roles="admin,manager"/> 
        <user username="role1" password="tomcat" roles="role1"/> 
</tomcat-users> 

4 设置环境变量,获取服务器状态 
# vi /etc/profile 
JAVA_OPTS=-Dcom.sun.management.jmxremote 
export JAVA_OPTS 

5 重启动服务器 
6 输入http://localhost/probe/,输入用户名和密码 
7 即可进入,这里比较精彩的是对内存的监视,动态显示了JVM的内存图表
posted @ 2010-08-09 12:51 Aaronlong31 阅读(382) | 评论 (0)编辑 收藏

设置每天8:50开机,要是9:15电脑还没人使用.就自动关机.
计算机启动时按“Delete”键进入BIOS界面。
在BIOS设置主界面中选择“Power Management Setup”菜单,
Resume By Alarm 值设成Enabled
再在”Date (of Month) Alarm”和“Time (hh:mm:ss) Alarm”中设定开机的日期和时间。
如果把“Date”设为0,则默认为每天定时开机。
设置好后按“F10“保存设置就可以了,机器会重新启动,设置成功。
自动登录
单击“开始/运行”,输入“rundll32 netplwiz.dll,UsersRunDll”
按回车键后弹出“用户帐户”窗口
然后取消选定“要使用本机,用户必须输入用户名和密码”选项,单击确定
在弹出的对话框中输入你想让电脑每次自动登录的账户和密码即可。
自动关机
1.控制面板>管理工具>服务
双击名称列为 Task Scheduler 的记录,把启动类型设为自动,再点启动按钮,再保存.
再从运行中输入
at 9:15 /every:M,T,W,Th,F,S,Su shutdown -s -f -t 300 -c "快要停电了,取消关机命令shutdown -a"
第天9:15 执行关机,有300秒的等待时间。
posted @ 2010-08-09 12:45 Aaronlong31 阅读(403) | 评论 (0)编辑 收藏

1.修改linux的时间可以使用date指令

在命令行输入:

date
 显示当前时间 Fri Aug  3 14:15:16 CST 2007

date -s 
按字符串方式修改时间
可以只修改日期,不修改时间,输入: date -s 2007-08-03
只修改时间,输入:date -s 14:15:00
同时修改日期时间,注意要加双引号,日期与时间之间有一空格,输入:date -s "2007-08-03 14:15:00"

修改完后,记得输入:clock -w 
把系统时间写入CMOS

2.Linux下启动/关闭/重启Mysql
/etc/init.d/mysql   start|stop|restart|reload|force-reload
posted @ 2010-08-06 10:02 Aaronlong31 阅读(229) | 评论 (0)编辑 收藏

使用PowerDesigner设计数据库时,要写很多comment让人看,生成SQL文件时也包含了这些comment,但是用这SQL文件生成数据库时,经常会因为comment太长而失败,在文件中一点一点的删除comment未免太麻烦。这里有个方法可以让PowerDesigner生成SQL文件时不包含comment。(我使用的是mysql,估计其他的也差不多。)


选择Edit current DBMS,依次点开script -> objects -> table -> create ,在value中将最后的[comment = "%TLABL%"]删除,这个是去掉创建表的comment。
script -> objects -> column -> create,在value中将最后的[ comment %.q:@OBJTLABL%]去掉,这个是去掉column的comment的。
这样生成SQL文件时就不会产生comment了。

另外还有一点,如果数据库设计中有index,生成SQL文件时会把drop index 放到文件的最前面,当第一次生成数据库时,由于没有index所以会报错,因此要把最前面的drop index删掉,但手动删除还是麻烦,可以这样:
CTRL + G,打开Database Generation,选择options选项卡,选择index,把右边的Drop index前的√去掉就行了
posted @ 2010-07-18 10:57 Aaronlong31 阅读(4637) | 评论 (0)编辑 收藏

 

要用powerdesigner做数据库表设计, 最后发现导出sql脚本就出现了问题, 首先是字段都带上了双引号, 而且还总是报错字段名过长。
另外还发现column属性,Code才是最终产生的Table Name ,而Name就有点像是描述了。
在 Database里选择你的数据库然后在 DBMS里面选择(注意看清楚PDM的引用模式是哪个数据库)
Script->Sql->Format->EnableOwnerPrefix value=Yes;

Script->Sql->Format->CaseSensitivityUsingQuote=No;

这时再导出 表的名称就正常了

PowerDesigner9 移植到 PowerDesigner12 的问题:

默认长度的问题,我在PowerDesigner9导出没问题的数据库脚本拿到PowerDesigner12导出出现如下问题:

Column constraint name maximum length is limited to 15 characters

在使用PD12时出现诸如以下错误:

Reference constraint name maximum length is limited to 7 characters
Key constraint name maximum length is limited to 7 characters
Table code maximum length
Column code maximum length
……

导致生成建表SQL时通不过,细究原因原来是默认设置的问题,改下就可以了:)

调整以下参数:
Database=>Edit current DBMS   数据库类型::Script\Objects\MaxConstLen value=>255
Database=>Edit current DBMS   数据库类型::Script\Objects\Table\Maxlen value=>255
Database=>Edit current DBMS   数据库类型::Script\Objects\Column\Maxlen value=>255



再说说如何在 PowerDesigner12里创建带导出分区的脚本

默认情况下分区设置是隐藏的 所以要选种该表 然后再点左下脚的More>>

选择Physical Options 这个选项 这里可以添加表空间和索引空间 我习惯直接设置分区SQL语句 这样避免了很多垃圾语句生成

选择 SQL 然后创建分区

  partition by list
( data_part  )
( partition Pd00
    values ( '0'  ) )

就OK了 去Partitions选项里可以看到这一列分区效果

设置索引默认空间:

选择KEY选项或者Index选项 直接双击该索引 然后设置Physical Options

直接输入SQL创建默认索引指向表空间   using index  tablespace index_emcspace

PowerDesigner功能强大 完全可以维护大部分的数据库建模

现在在Oracle数据库维护有些问题 创建数据库的Package 或者 Types 、Directories、Jobs等 没办法维护进去。

------------------------------------------------------------------------------------------------------
因为我下载的pd11是试用版,功能受限, index导出总是报错, 换用了pd12的破解版, 没有问题了。
而且改object最大长度设置,只要设定一个全局的,方便一些:
PGSQL73::Script\Objects\MaxConstLen
value=>255
PGSQL73::Script\Objects\Table\Maxlen
value=>255

另外发现pd12也没有表长度长一点就报错的问题, 不用像前面那样改长度了。
posted @ 2010-07-04 14:56 Aaronlong31 阅读(1481) | 评论 (0)编辑 收藏

错误信息:出现java.lang.NoSuchMethodException setUser([LJava.lang.String;)异常

struts2中的UserAction:
 1 public class UserAction{
 2 private User user;
 3 private String name;
 4 public void setName(String name){
 5 this.name = name;
 6 }
 7 public String getName(){
 8 return name;
 9 }
10 public User getUser() {
11       return user;
12 }
13 
14 
15 public void setUser(User user) {
16       this.user = user;
17 }
18 
19 public String execute(){
20      System.println(user.getUsername);
21 }
22 
23 }
24 
User就两个属性:username/password.
这个是开始的struts.xml中的代码:
<package name="json" extends="json-default">  
     
<action name="save" class="com.aaron.example.action.UserAction">  
    
<result type="json"></result>  
     
</action>  
</package>  
这个是jQuery代码:
$(function(){   
     
var json = {"user":{"username":"zhangsan","password":"123"}};//方法1   
     //json = {"name":"zhanglong"};// 方法2    
     //json = {"user.username":"zhangsan","user.password":123};//方法3   
}
); 
 用方法1会出项上述错误,方法2和方法3都可行。

原因:
方法2成功的原因是{"name":"zhanglong"}传递的是一个名值对,就像是request的parameter.
方法3成功也是一样的,struts2的OGNL会识别user.username,并把它对应的值"zhangsan"存放到user的username属性上
方法1失败是因为传的名值对是:"user":"{'username':'zhangsan','password','123'}",这样struts就会你要将"{'username':'zhangsan','password','123'}"这个字符串赋值给user对象,它就会调用setUser(String user)方法(或者是setUser(String[] user)),由于UserAction中没有这个方法,所以会报错。

解决方法:
根据jsonplugin官方的文档,页面传入的请求的content-type要是application/json,否则json的interceptor不会帮你将json转换为java对象,这里他忘了说明一点,jsonplugin中只是定义了json的interceptor,并没有将其放入到package的拦截器栈中,还需要我们自己放入自己的package中。如下:
1 <interceptors>
2     <interceptor-stack name="myDefaultStack">
3         <interceptor-ref name="json"/>
4         <interceptor-ref name="defaultStack"/>
5     </interceptor-stack>
6 </interceptors>
7     
8 <default-interceptor-ref name="myDefaultStack"/>
还要设置jquery的ajax请求的content-type和传递类型为"POST":
1 $.ajax({
2     type:"POST",
3     data:jsonText,
4     url:"save.action?number=" + Math.random(),
5     contentType:"application/json"
6 });
其中jsonText如下:
1 var jsonText = "{'user':{
2         'username':'zhangsan',
3         'password':'123'
4     }
5 }"
注意,整个jsonText是个字符串,其中的名值对的名要用''包起来,否则会报异常,指出json格式不对。
只有这样做了后,json拦截器才会帮你做转换。

还有,如果UserAction中有个userService的话,需要设置action的result的param:
1 <result type="json">
2     <param name="excludeProperties">
3              userService
4     </param>
5 </result>
这样就不会将userService进行序列化了,或者可以将action中的getUserService()方法去掉。

如果user对象是从hibernate获取的,可能得到的是一个代理对象,对其进行json序列化时会出错。解决办法是为User对象加上@Proxy(lazy=false)注解。
posted @ 2010-06-29 15:10 Aaronlong31 阅读(12622) | 评论 (17)编辑 收藏

Ant


 
 当一个代码项目大了以后,每次重新编译,打包,测试等都会变得非常复杂而且重复,因此c语言中有make脚本来帮助这些工作的批量完成。在Java 中应用是平台无关性的,当然不会用平台相关的make脚本来完成这些批处理任务了,ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些。
  每个ant脚本(缺省叫build.xml)中设置了一系列任务(target):比如对于一个一般的项目可能需要有以下任务。
  * 任务1:usage 打印本脚本的帮助信息(缺省)
  * 任务2:clean <-- init 清空初始化环境
  * 任务3:javadoc <-- build <-- init 生成JAVADOC
  * 任务4:jar <-- build <-- init 生成JAR
  * 任务5:all <-- jar + javadoc <-- build <-- init 完成以上所有任务:jar javadoc
  而多个任务之间往往又包含了一定了依赖关系:比如把整个应用打包任务(jar)的这个依赖于编译任务(build),而编译任务又依赖于整个环境初始化任务(init)等。
  注:我看到很多项目的ant脚本中的命名基本上都是一致的,比如:编译一般叫build或者compile;打包一般叫jar或war;生成文档一般命名为 javadoc或javadocs;执行全部任务all。在每个任务的中,ANT会根据配置调用一些外部应用并配以相应参数执行。虽然ANT可调用的外部应用种类非常丰富,但其实最常用的就2,3个:比如javac javadoc jar等。
 
 
Ant 开发
  Ant的构建文件
  当开始一个新的项目时,首先应该编写Ant构建文件。构建文件定义了构建过程,并被团队开发中每个人使用。Ant构建文件默认命名为build.xml,也可以取其他的名字。只不过在运行的时候把这个命名当作参数传给Ant。构建文件可以放在任何的位置。一般做法是放在项目顶层目录中,这样可以保持项目的简洁和清晰。下面是一个典型的项目层次结构。
  (1) src存放文件。
  (2) class存放编译后的文件。
  (3) lib存放第三方JAR包。
  (4) dist存放打包,发布以后的代码。
  Ant构建文件是XML文件。每个构建文件定义一个唯一的项目(Project元素)。每个项目下可以定义很多目标(target元素),这些目标之间可以有依赖关系。当执行这类目标时,需要执行他们所依赖的目标。
  每个目标中可以定义多个任务,目标中还定义了所要执行的任务序列。Ant在构建目标时必须调用所定义的任务。任务定义了Ant实际执行的命令。Ant中的任务可以为3类。
  (1) 核心任务。核心任务是Ant自带的任务。
  (2) 可选任务。可选任务实来自第三方的任务,因此需要一个附加的JAR文件。
  (3) 用户自定义的任务。用户自定义的任务实用户自己开发的任务。
  1.<project>标签
  每个构建文件对应一个项目。<project>标签时构建文件的根标签。它可以有多个内在属性,就如代码中所示,其各个属性的含义分别如下。
  (1) default表示默认的运行目标,这个属性是必须的。
  (2) basedir表示项目的基准目录。
  (3) name表示项目名。
  (4) description表示项目的描述。
  每个构建文件都对应于一个项目,但是大型项目经常包含大量的子项目,每一个子项目都可以有自己的构建文件。
  2.<target>标签
  一个项目标签下可以有一个或多个target标签。一个target标签可以依赖其他的target标签。
  例如,有一个target用于编译程序,另一个target用于声称可执行文件。在生成可执行文件之前必须先编译该文件,因策可执行文件的target依赖于编译程序的target。Target的所有属性如下。
  (1).name表示标明,这个属性是必须的。
  (2).depends表示依赖的目标。
  (3)if表示仅当属性设置时才执行。
  (4)unless表示当属性没有设置时才执行。
  (5)description表示项目的描述。
  Ant的depends属性指定了target的执行顺序。Ant会依照depends属性中target出现顺序依次执行每个target。在执行之前,首先需要执行它所依赖的target。程序中的名为run的target的depends属性compile,而名为compile的target的depends属性是prepare,所以这几个target执行的顺序是prepare->compile->run。
  一个target只能被执行一次,即使有多个target依赖于它。如果没有if或unless属性,target总会被执行。
  3.<mkdir>标签
  该标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名,其代码如下:
  <mkdir dir=”${class.root}”/>
  通过以上代码就创建了一个目录,这个目录已经被前面的property标签所指定。
  4<jar>标签
  该标签用来生成一个JAR文件,其属性如下。
  (1) destfile表示JAR文件名。
  (2) basedir表示被归档的文件名。
  (3) includes表示别归档的文件模式。
  (4) exchudes表示被排除的文件模式。
  5.<javac标签>
  该标签用于编译一个或一组java文件,其属性如下。
  (1).srcdir表示源程序的目录。
  (2).destdir表示class文件的输出目录。
  (3).include表示被编译的文件的模式。
  (4).excludes表示被排除的文件的模式。
  (5).classpath表示所使用的类路径。
  (6).debug表示包含的调试信息。
  (7).optimize表示是否使用优化。
  (8).verbose 表示提供详细的输出信息。
  (9).fileonerror表示当碰到错误就自动停止。
  6.<java>标签
  该标签用来执行编译生成的.class文件,其属性如下。
  (1).classname 表示将执行的类名。
  (2).jar表示包含该类的JAR文件名。
  (3).classpath所表示用到的类路径。
  (4).fork表示在一个新的虚拟机中运行该类。
  (5).failonerror表示当出现错误时自动停止。
  (6).output 表示输出文件。
  (7).append表示追加或者覆盖默认文件。
  7.<delete>标签
  该标签用于删除一个文件或一组文件,其属性如下。
  (1)/file表示要删除的文件。
  (2).dir表示要删除的目录。
  (3).includeEmptyDirs 表示指定是否要删除空目录,默认值是删除。
  (4).failonerror 表示指定当碰到错误是否停止,默认值是自动停止。
  (5).verbose表示指定是否列出所删除的文件,默认值为不列出。
  8.<copy>标签
  该标签用于文件或文件集的拷贝,其属性如下。
  (1).file 表示源文件。
  (2).tofile 表示目标文件。
  (3).todir 表示目标目录。
  (4).overwrite 表示指定是否覆盖目标文件,默认值是不覆盖。
  (5).includeEmptyDirs 表示制定是否拷贝空目录,默认值为拷贝。
  (6).failonerror 表示指定如目标没有发现是否自动停止,默认值是停止。
  (7).verbose 表示制定是否显示详细信息,默认值不显示。
 
 
 Ant 的安装
  解包后在系统可执行路径中加入指向ant的bin的路径就可以了,比如可以在GNU/Linux上把以下配置加入/etc/profile中:
  export ANT_HOME=/home/ant
  export JAVA_HOME=/usr/java/j2sdk1.4.1
  export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
  Windows 下的安装:
  下载后解压到某个目录我这里以D:\apache-ant-1.7.1为例子:
  添加path全局环境变量:D:\apache-ant-1.7.1\bin
  这样在command line就可以运行ant命令了
  测试:运行->cmd/command->ant 如果没有安装成功则回报找不到这个命令,安装成功会有相关的提示信息显示。
  这样执行ant 后,如果不指定配置文件ant会缺省找build.xml这个配置文件,并根据配置文件执行任务,缺省的任务设置可以指向最常用的任务,比如: build,或指向打印帮助信息:usage,告诉用户有那些脚本选项可以使用。
  Ant 的运行
  安装好Ant并且配置好路径之后,在命令行中切换到构建文件的目录,输入Ant命令就可以运行Ant.若没有指定任何参数,Ant会在当前目录下查询build.xml文件。如果找到了就用该文件作为构建文件。如果使用了 –find 选项,Ant 就会在上级目录中找构建文件,直至到达文件系统的根目录。如果构建文件的名字不是build.xml ,则Ant运行的时候就可以使用 –buildfile file,这里file 指定了要使用的构建文件的名称,示例如下:
  Ant如下说明了表示当前目录的构建文件为build.xml 运行 ant 执行默认的目标。
  Ant –buildfile test.xml
  使用当前目录下的test.xml 文件运行Ant ,执行默认的目标
posted @ 2010-02-04 09:55 Aaronlong31 阅读(337) | 评论 (0)编辑 收藏

 1 -- 以下命令均在cmd中运行
 2
 3 mysqldump  - uroot  - p123456  - d webmeeting  > C:\\test.sql 
 4 -- 将数据库webmeeting中的表结构导出到C:\\test.sql中
 5
 6 mysqldump  - uroot  - p123456 webmeeting  > 123 .sql
 7   -- 将数据库中所有数据导出到123.sql中
 8
 9 mysql  - uroot  - p123456 webmeeting  < c:\\ 123 .sql
10   -- 将123.sql中的数据导入到数据库webmeeting中
posted @ 2010-01-27 14:41 Aaronlong31 阅读(381) | 评论 (0)编辑 收藏