标签 MySQL 下的文章

Hibernate(JPA)中异常not-null property references a null or transient value解决方法

一个不能为空的属性引用了一个空值或游离状态的值.

如:有不为null的字段在删除时却为null,就报这种错误了

方案1、将.hbm.xml文件中cascade设成all,也就是父表记录删除,与父表关联的子表记录都删除(根据具体情况来取舍)

方案2,删除父表时,先解除子表与父表的关联关系,再删除父表记录(根据具体情况来取舍

异常1:not-null property references a null or transient value解决方法:将“一对多”关系中的“一”方,not-null设置为false

异常2:org.hibernate.TransientObjectException: object references an unsaved transient instance解决方法:cascade="save-update,persist"

异常3:org.hibernate.QueryException: could not resolve property解 决方法:"from Category category where category.userID = :userID"修改为"from Category category where userID = :userID"或者"from Category category where category.user.id = :userID"

异常4:could not initialize proxy - the owning Session was closed

解决方法:设置lazy为false

Windows系统下Apache搭配PHP5支持MySQL

今天在机器上配好apache2.0.x+php5+mysql5,部署帝国cms系统的时候,结果发现php5默认是不支持mysql的。于是便打开php.ini文件,查找extension=php_mysql.dll,把前面的分号去掉,重启apache,报错找不到php_mysql.dll。这点困难吓不到我,找到extension_dir指向到ext所在的目录,然后把libmysql.dll拷贝到系统system32目录下,重启apache,成功了。

如何用Powerdesigner的PDM(物理数据模型)生成数据库及逆向工程(将现有的数据库生成PDM)

如何用Powerdesigner的PDM(物理数据模型)生成数据库及逆向工程(将现有的数据库生成PDM) 
pdm做好后,最终是要将其转化为数据库实体的。 
1.确认当前Powerdesigner设置的dbms是否正确,即是否是我们要生成的数据库类型,我在这里使用的是sqlserver2000:
Powerdesigner->数据库->更改当前dbms,选择您的数据库类型。

2.配置Powerdesigner与数据源的连接
Powerdesigner->数据库->配置连接->用户dsn(或系统dsn)->选择、添加您的数据源
3.连接
Powerdesigner->数据库->连接->设置好您刚才建立的dsn确定。
OK,设置好连接后我们就可以将pdm生成sql语句了。
4.数据库生成
Powerdesigner->数据库->生成数据库->配置好(默认就可以)后选择确定就好了。
拿到sql脚本语句,大家都知道应当如何做了吧,放到sql查询分析器里执行吧。

Powerdesigner逆向工程从现有数据库生成PDM

在数据建模过程中,我们建立概念数据模型,通过正向工程生成物理数据模型,生成数据库建库脚本,最后将物理数据模型生成关系数据库,现在反过来,通过逆向工程将关系数据库,生成物理数据模型。
优点:

在丢失数据模型或者数据库模型同现有的数据库不一致,可以通过该方法生成使用中数据库的模型

缺点:

还原回的模型中,可能会没有中文注释,没有表外键对应关系(字段还有,索引关系没了)

前提:

1,确认要生成模型的数据库是最新的,并且可以使用

2,安装Powerdesigner软件

具体操作步骤:

一,建立ODBC数据源

1, 打开系统ODBC数据源,位置“控制面板--管理工具--数据源(ODBC)

2,选择系统DSN,点击添加按钮,会弹出如下界面,选择与数据库相匹配的驱动程序

3,点击完成,弹出数据源名称(自定),和选择你要连接的数据库,如下图所示

4,选择确定后,该数据源建立成功,可以双击该数据源名称进行连接测试,如下图所示

5,至此数据源建立完成,当然这些也可以不用在这里建立,在powerdesigner里也可以建立,建立方法为

选择Database->configure connections,转到system dsn标签,点击Add按钮,选数据库类型DB2,点击完成。显 示如下:输入DataSource Name“PDMTest”;输入ServerName“Database”, 配置完成。如下所示:

二,在Powerdesigner中逆向生成

1,打开Powerdesigner工具,创建一个PDM文件,选择与之匹配的数据库类型“ibm db2 udb 8.x common server”。创建方法为:右键点击左侧面板中的WorkSpace---->new------>physical data nodel ,在DBMS中选择你要的数据类型,选择好后点击确定,则新建立了一个工作空间。

2,选择Database菜单下的Reverse Engineer Database,弹出Database Reverse Engineering对话框,选Using an ODBC data source选ODBC数据源“s2ms”,如下图所示:


3,点击确定后,显示此数据库中所有表、视图、用户(这个选择一下该数据库的用户)。根据需要选择后,转换成pdm。图示如下


4,选择好后,点击OK,则生成模型。


三,利用脚本生成模型

如果你不光有个正在使有的数据库,你还有一下建立库的脚本,那你发财了!因为用.sql的脚本生成的模型,就不存在用数据库生成的缺点了,具体操作如下:

二、 通过SQL脚本逆向工程生成PDM

1、 数据库SQL脚本文件crebas.sql。下为脚本实例:
/*==============================================================*/
/* Database name: PhysicalDataModel_1 */
/* DBMS name: ORACLE Version 9i */
/* Created on: 2003-07-13 10:49:08 */
/*==============================================================*/
/*==============================================================*/
/* Table: "class" */
/*==============================================================*/
create table "class" (
"classID" NUMBER(2) not null,
"className" VARCHAR2(24),
constraint PK_CLASS primary key ("classID")
)
/
/*==============================================================*/
/* Table: "student" */
/*==============================================================*/
create table "student" (
"studentID" NUMBER(10) not null,
"studentName" VARCHAR2(4),
"classID" NUMBER(2),
constraint PK_STUDENT primary key ("studentID")
)
/
alter table "student"
add constraint FK_STUDENT_REFERENCE_CLASS foreign key ("classID")
references "class" ("classID")
/

2、 还是创建一个pdm,选择Database--->Reverse Engineer Database,选择Using script files。


3、 看到由脚本自动生成相关的PDM如下所示:

四,生成模型后要导出数据库建库脚本

导好的模型,当然是用来修改和导出建库脚本的,操作方法如下

1,选择database--->generate database弹出如下窗口

在用户的none中选择数据库用户,同时可选要导出的表,最后点击确定,如果不能正常生成脚本提示模型错误,则在上图中的options中将check modle 的选项去掉,点击确定,生成sql脚本,

这时生成的脚本不要着急去用,因为可能是有问题,用记事本或其它工具打开这个脚本,你会发现在所属名上也就是s2ms上都会加上""号,用Ctrl+H,将所有"替换为空,就大功告成了!

转自:http://lgstarzkhl.iteye.com/blog/680752

MySQL数据库将一张表中的数据或查询结果插入另一张表

想把一张表里面的数据导入另一张表里面,但是有些字段的数据想要改变,比如日期类型,原表用的是php的int(11) 来存储timestamp(时间戳)的,现在想改成Java程序用datetime来存储。

方法:

MYSQL> INSERT INTO 目标表 SELECT * FROM 来源表;

比如要将 articles 表插入到 newArticles 表中,则是:

MYSQL> INSERT INTO newArticles SELECT * FROM articles;

如果只希望导入指定字段,可以用这种方法:

MYSQL> INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表;

将一个表中数据插入另一张表,排重,删除,导入

MYSQL> insert into 目标表(字段1,字段2,字段3……) select  字段1,字段2,字段3… from 来源表 where 条件1 and 条件2;

排重很简单,只要在需要排重的字段前加distinct就可以了!

查询记录里有多少条不同的id:

MYSQL> select count(distinct id) from tableName;

查询打印出不同的记录:

MYSQL> select distinct * from tabelName;

删除表中的列:

MYSQL> ALTER TABLE 表名 DROP COLUMN 列名;

将本地文件中数据导入数据库:

MYSQL> load data local infile 'd:/文件.txt' into table 表名;