Aaronlong31

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

2010年6月29日 #

常见错误号对照表

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 阅读(837) | 评论 (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 阅读(4639) | 评论 (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 阅读(1482) | 评论 (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)编辑 收藏