2016-12-10 3 views
-2

Когда я создаю таблицу, как это:SQL 00904. 00000 - "% s: неверный идентификатор" При создании таблицы

CREATE TABLE "Movie_list" (
    "Movie_id"    NUMBER(8) NOT NULL, 
    "Company"    VARCHAR2(30) NOT NULL, 
    "Rating"    DECIMAL(5,1) NOT NULL, 
    "Storyline"   VARCHAR2(255) NOT NULL, 
    "Award_id"    VARCHAR2(255) NOT NULL, 
    "Cast_and_Crew_id"  VARCHAR2(255) NOT NULL, 
    CONSTRAINT Movie_pk PRIMARY KEY (Movie_id), 
); 

отчет об ошибках producded -

SQL Error: ORA-00904: : invalid identifier 
00904. 00000 - "%s: invalid identifier" 

Я не» не вижу проблем, пожалуйста, помогите.

+0

Pleas RTFM! Вы не должны указывать имена таблиц и столбцов между кавычками. – cFreed

ответ

0

Ошибки:

  • имена таблиц и столбцов, заключенные в кавычки
  • NUMBER и VARCHAR2 не является допустимым типом MySQL
  • А, в конце спецификации ограничений, которая является недействительным
+0

Я бегу это в Oracle SQL Developer, –

+0

отчет об ошибке - SQL Error: ORA-00907: недостающую правую скобку 00907. 00000 - "недостающее правая скобка" * Причина: * Действие: –

+0

Я также сделал один без кавычки с той же ошибкой –

1

Основная проблема заключается в вашей спецификации первичного ключа, которая гласит:

CONSTRAINT Movie_pk PRIMARY KEY (Movie_id), 

Однако в определении таблицы вы цитировали имя этого поля, т.е.

"Movie_id"    NUMBER(8) NOT NULL, 

Поскольку имя этого поля (а на самом деле каждое поле в таблице, и имя таблицы сам) цитируется, имена хранятся в базе данных как заданное имя смешанного случая, и поскольку Oracle преобразует все идентификаторы без кавычек в UPPER_CASE, это означает, что КАЖДЫЙ ВРЕМЯ ВЫ НАХОДИТЕСЬ НА ЭТОМ ТАБЛИЦЕ И ЕГО ПОЛЯХ, ВЫ ДОЛЖНЫ ЦИТАТЫ ИХ , Таким образом, ваше ограничение должно быть

CONSTRAINT Movie_pk PRIMARY KEY ("Movie_id") 

Моя рекомендация заключается в том, что вы обойдены именами «Mixed_case». Избавьтесь от котировок, и Oracle сохранит имена в UPPER_CASE внутренне. Вы все еще можете указать , используя Mixed_Case, если хотите, но вам не придется «Quote_Them_Every_Time_You_Use_Them», который становится действительно старым и очень плохо читается. Я предлагаю вам изменить определение таблицы на

CREATE TABLE Movie_list (
    Movie_id    NUMBER(8) NOT NULL, 
    Company    VARCHAR2(30) NOT NULL, 
    Rating    DECIMAL(5,1) NOT NULL, 
    Storyline   VARCHAR2(255) NOT NULL, 
    Award_id    VARCHAR2(255) NOT NULL, 
    Cast_and_Crew_id  VARCHAR2(255) NOT NULL, 
    CONSTRAINT Movie_pk PRIMARY KEY (Movie_id) 
); 

Удачи.

Смежные вопросы