MYSQL数据迁移tips,ORA-00907: missing right parenthesis
滥觞:zhjjava的 Blog 作者:zhjjava的 Blog
">
这一段工夫,公司项目谋划是旧数据的迁移,从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关连语法不支持的,以是出现如上错误。
写出来,以防各位在这个小成就上糜掷工夫.
另有个感受就是看成就我们不克不及只看表象,内外未必如一,任务云云,保管亦云云!
版权声明:
原创作品,允许转载,转载时请务必以超链接体式式子标明文章 原始情由 、作者信息和本声明。否则将究查规则责任。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!