您的当前位置:我要购书网>在线阅读>Java/J2EE/JSP

mysql数据迁移tips,ora-00907: missing right parenthesis

来源:互联网  作者:  发布:我要购物网收集整理  发布时间:2006-8-31 人气:390

这一段时间,公司项目计划是旧数据的迁移,从MYSQL迁移至ORACLE,开了无数次会,讨论了若干次。

错误现象:

在从MYSQL导出sql脚本后,在oracle相关工具里执行创建表的sql时,如下,有所删改:

CREATE TABLE TEST_TBL ( id NUMBER (6) NOT NULL , name varchar2(16) NOT NULL default '', tel varchar2(16) NOT NULL default '', CONSTRAINT PK_ID PRIMARY KEY ( id )) ;

报错:

The following error has occurred:

ORA-00907: missing right parenthesis

开始觉得莫明奇妙,已经将相关数据类型改了,还报这个错,很郁闷,浪费了足足有30分钟,搞这事,搞定后,遂想写下此文。

MYSQL ver :4.0.17,ORACLE:9i,这个问题与版本关系不大,只是从严谨角度出发,还是提供一下版本.

错误原因在于:

字段定义: name varchar2(16) NOT NULL default ''

oracle的create table语法:

CREATE [ [ LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( { column_name data_type [ DEFAULT default_expr ] [ column_constraint [, ... ] ] | table_constraint } [, ... ]).....

意味着,字段给定默认值,default value 应该在[ column_constraint [, ... ] 之前,name字段定义应该是:name varchar2(16) default '' NOT NULL

再看MYSQL create table的语法:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)][table_options] [select_statement]create_definition: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]MYSQL中的语法定义是,default_value 写在"NOT NULL/NULL"之后,当然实际上在MYSQL里创建表时,default_value的值也可以在"NOT NULL/NULL"之前,之前之后都是无关的,都可以正确创建表,但在ORACLE中是严格按照语句定义来检验的,所以同样的语句(改相关字段类型后)在oracle中报错!

另外还有一点,无论是用mysqldump命令,还是用PHP提供的一个工具(选择导出为ORACLE格式),他们导出的表的定义SQL中,default value的位置都是在"NOT NULL/NULL"之后,而这是ORACLE相关语法不支持的,所以出现如上错误。

写出来,以防各位在这个小问题上浪费时间.

还有个感觉就是看问题我们不能只看表象,表里未必如一,工作如此,生活亦如此!

相关文章
· mysql5.0中文乱码解决方案
· mysql与jsp网页中文乱码问题的解决方案
· myeclipse 下开发jsf教程
· mysql的distinct group by sql语..
· mysql数据迁移tips,ora-00907: mis..
· mysql支持utf-8编码全攻略
· mysql查询优化系列讲座之调度和锁定
· myeclipse开发struts框架的hello wo..
· myeclipse中j2ee项目之间的组织结构
· mysql系统的发布、安装
热点文章
%>
· creating user controls
· 提高fastreplace速度 (fstrrep.pas)
· asc ii 完整码表及简介
· 自动生成拼音(汉字反查到拼音)
· sql2000无法安装的解决办法
· 浏览器集成教学 自定义浏览器
· vc++技术内幕(第四版)笔记(第7章)
· mysql5.0中文乱码解决方案
· sql server日期计算
· vc下利用ado连接access数据库
 淘宝旺旺:我要购书网上书店『图书目录
本购书中心地址: 杭州市延安路111号清波商厦南楼D座(总部) 上海市闸北区老沪太路网上购书中心(沪部),  邮编:310002
电子邮件:books@51goushu.com  经营许可证编号:沪ICP备06038574号
版权所有 2003-2008 © All Rights Reserved .购书网