【问题标题】:sql developer mysql to oracle migrationsql developer mysql 到 oracle 迁移
【发布时间】:2011-09-07 16:08:14
【问题描述】:

我成功地将mysql迁移到oracle。但唯一的问题是表名和字段名区分大小写。网络中的某些页面说转到 sql developer 中的工具和选项并勾选 ansi 但我找不到它。 在 oracle 网站论坛上说它是迁移的一部分。 有人有新版本的 sql developer 并从 mysql 迁移吗?

例如

calendarColor 变成 CALENDARCOLOR

【问题讨论】:

  • 请向我们展示您正在运行的真实 SQL 语句。理想情况下也显示使用 CREATE TABLE 语句(只需从 SQL Developer 复制该 CREATE 表即可)
  • PROMPT Creating Table calendarcolor ... CREATE TABLE calendarcolor ( calendarColorId NUMBER(10,0) NOT NULL ); PROMPT Creating Primary Key Constraint PRIMARY_3 on table calendarcolor ... ALTER TABLE calendarcolor ADD CONSTRAINT PRIMARY_3 PRIMARY KEY ( calendarColorId ) ENABLE ;
  • 似乎生成代码不是大写怪异.. 必须检查生成的代码
  • 如果 CREATE TABLE 中没有使用引号,那么该表在内部以大写形式存储,您不需要在任何地方使用引号
  • 永远不要使用任何引用。

标签: mysql oracle oracle-sqldeveloper


【解决方案1】:

我真的不明白这是个问题。由于Oracle的对象默认是不区分大小写的,你可以继续使用SELECT * FROM calendarColor查询。

如果您需要区分大小写,请使用引号,例如:

CREATE TABLE "calendarColor" ( ... );

SELECT * FROM TABLE "calendarColor";

另请参阅:Schema Object Names and Qualifiers

【讨论】:

  • [quote]错误从命令的第 1 行开始:select * from "calendarColor" 命令行错误:1 列:14 错误报告:SQL 错误:ORA-00942:表或视图不存在00942. 00000 - “表或视图不存在” *原因:*操作:[/quote]
  • 如果您在创建表格时不使用引号(即:不区分大小写),您必须在不使用引号的情况下引用它(或者如果您使用引号,则全部使用大写字母)。也请不要在这里使用BBCode。它很丑,所以不支持它。
  • hmm.. 我没有生成代码。它由 sql 开发人员生成.. 嗯.. 似乎你没有使用它.. 最好不要回答...
【解决方案2】:

如果表是使用

创建的
CREATE TABLE calendarcolor ( calendarColorId NUMBER(10,0) NOT NULL ); 

然后表名在内部以大写形式存储。当你运行这样的语句时:

select * from "calendarColor" 

那么您是在告诉 Oracle:表名应该区分大小写,但由于没有名为 calenderColor 的表,因此只有一个名为 CALENDARCOLOR 的表,因此您的语句失败。

修复很简单:删除引号并将选择更改为

select * from calendarColor

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-24
    • 2015-05-06
    • 2012-12-13
    • 2011-08-25
    • 2017-07-12
    • 2010-09-24
    • 1970-01-01
    • 2021-08-26
    相关资源
    最近更新 更多