Postgre에서 'user'라는 이름의 데이터베이스 테이블을 만들 수 없습니다.SQL
Postgre인 것 같습니다.SQL에서는 'user'라는 이름의 데이터베이스 테이블을 만들 수 없습니다.그러나 MySQL은 이러한 테이블을 만들 수 있습니다.
그것이 키워드이기 때문입니까?그러나 최대 절전 모드에서는 문제를 식별할 수 없습니다(Postgre를 설정하더라도).SQL Dialect)입니다.
user
예약된 단어이므로 일반적으로 식별자(숫자, 열)에 예약된 단어를 사용하는 것은 좋지 않습니다.
이렇게 하려면 테이블 이름을 큰따옴표로 묶어야 합니다.
create table "user" (...);
그러나 표를 참조할 때는 항상 큰따옴표를 사용해야 합니다.또한 테이블 이름은 대소문자를 구분합니다. "user"
와(와) 다른 테이블 이름입니다."User"
.
많은 수고를 덜려면 다른 이름을 사용합니다. users
,user_account
, ...
인용된 식별자에 대한 자세한 내용은 설명서 http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS 에서 확인할 수 있습니다.
다음 구문을 사용하여 JPA로 테이블 이름을 지정할 수 있습니다.
@Table(name="\"user\"")
우리는 예전에 같은 문제가 있었고 방금 테이블 이름을 바꿨습니다.user
로.app_user
최대 절전 모드/J 사용으로 인해PA. 우리는 이렇게 하는 것이 더 쉬울 것이라고 생각했습니다.이 작은 해결책이 다른 사람에게 도움이 되기를 바랍니다.
후행 밑줄_
SQL 표준은 키워드 또는 예약된 단어에 후행 밑줄(U+005F LOW LINE)을 사용하지 않을 것을 명시적으로 약속합니다.
따라서 1,000개가 넘는 키워드와 다양한 데이터베이스 엔진에서 사용하는 예약된 단어와의 충돌을 방지하기 위해 모든 데이터베이스 식별자에 뒤에 밑줄이 표시됩니다. (네, 정말로 1,000개가 넘는 키워드가 예약되었습니다.)
변경 내용:
CREATE TABLE user ( … ) ;
대상:
CREATE TABLE user_ ( … ) ;
스키마, 테이블, 열, 색인 등 모든 데이터베이스 이름에 대해 습관적으로 이 작업을 수행합니다.
명명 충돌로 인한 전체 버그와 문제를 제거했기 때문에 조금 더 안심할 수 있습니다.
추가적인 이점으로, 이 관행은 문서, 이메일 등에서 이름이 붙은 프로그래밍 언어 변수를 언급할 때 매우 명확합니다.user
대 데이터베이스 열user_
뒤에 밑줄이 있는 모든 항목은 분명히 데이터베이스에서 가져온 것입니다.
테이블을 만들 수 있습니다.user
이외의 스키마로public
예:
CREATE SCHEMA my_schema;
CREATE TABLE my_schema.user(...);
언급URL : https://stackoverflow.com/questions/22256124/cannot-create-a-database-table-named-user-in-postgresql
'programing' 카테고리의 다른 글
C#에서 환경 변수를 가져오고 설정하는 방법은 무엇입니까? (0) | 2023.05.08 |
---|---|
문자열을 날짜/시간으로 변환 (0) | 2023.05.08 |
Git의 빠른 전달이란 무엇입니까? (0) | 2023.05.08 |
Xcode에서 NSZombie를 활성화하는 방법은 무엇입니까? (0) | 2023.05.08 |
git mv 및 디렉토리의 대소문자만 변경 (0) | 2023.05.08 |