ORA-00907缺失右括号报错咨询:建表语句疏漏排查
解决ORA-00907: missing right parenthesis错误的小细节
嘿,这个问题其实挺常见的——你踩了Oracle和MySQL数据类型语法差异的小坑啦!
问题根源
Oracle数据库里的int类型不需要在括号里指定长度,int(20)是MySQL的写法,Oracle不认这种格式,这就是触发ORA-00907错误的直接原因。
修正后的两种方案
方案1:直接使用Oracle的int类型(无需长度)
create table vote ( vote_id number(7) NOT NULL, artwork_id int, person_id int, PRIMARY KEY (vote_id) );
方案2:改用Oracle更灵活的number类型(推荐,可自定义精度)
如果需要限制数字的位数,用number(p,s)格式更符合Oracle的使用习惯:
create table vote ( vote_id number(7) NOT NULL, artwork_id number(20), person_id number(20), PRIMARY KEY (vote_id) );
额外说明
Oracle里的int其实是number(38)的别名,默认支持最大精度的整数;如果有特定的精度需求,number类型能更精准地控制数字的范围和小数位数。
内容的提问来源于stack exchange,提问作者Rohan Kapoor
相关产品推荐
相关产品推荐

