source

생성된 열이 있는 테이블을 생성하면 오류가 발생합니다.

manysource 2022. 10. 25. 17:53

생성된 열이 있는 테이블을 생성하면 오류가 발생합니다.

이 답변에 따라 MySQL에 테이블을 구축하려고 합니다.그러나 MySQL에서 답변의 예시와 같은 쿼리를 실행해도 오류가 계속 발생합니다.

이 쿼리는 매뉴얼에서 가져온 것으로 올바르게 작동합니다.

CREATE TABLE triangle (
  sidea DOUBLE,
  sideb DOUBLE,
  sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb)) stored
);

이 쿼리는 내가 링크한 답변에서 나온 것으로, 나에게 오류를 준다.

CREATE TABLE IF NOT EXISTS MyTable (
  id int NOT NULL AUTO_INCREMENT,
  name varchar(50) NOT NULL,
  description varchar(50) NOT NULL,
  slug text NOT NULL AS (SHA2(CONCAT(name, description), 256) STORED,
  PRIMARY KEY (id)
) DEFAULT CHARSET=utf8;

이 쿼리는 답변을 기반으로 실행하려고 하는 쿼리이며, 이 쿼리는 나에게도 오류를 일으킨다.

CREATE TABLE IF NOT EXISTS myTable(
  id BIGINT NOT NULL AUTO_INCREMENT,  
  first VARCHAR(104) NOT NULL DEFAULT '',  
  second DATETIME NULL,
  third DATETIME NULL,
  fourth VARCHAR(255) NULL,
  table_key varchar(64) NOT NULL AS (SHA2(concat_ws(',',first, second, third, fourth), 256)) stored unique,
  PRIMARY KEY (id),
  INDEX (first));

왜 작동이 안 되는지 알아내는 것 좀 도와줄래?

주의:SHA2(concat_ws(',',first, second, third, fourth), 256)이것은 통상적인 select 스테이트먼트에서 동작합니다.

편집

이것이 내가 받고 있는 오류이다.

Query execution failed

Reason:

Errore SQL [1064] [42000]: (conn:28) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AS (SHA2(CONCAT(name, description), 256) STORED,

  PRIMARY KEY (id)

) DEFAULT ' at line 5
Query is : CREATE TABLE IF NOT EXISTS MyTable (

  id int NOT NULL AUTO_INCREMENT,

  name varchar(50) NOT NULL,

  description varchar(50) NOT NULL,

  slug text NOT NULL AS (SHA2(CONCAT(name, description), 256) STORED,

  PRIMARY KEY (id)

) DEFAULT CHARSET=utf8

를 추가해야 합니다.NOT NULL그 후AS다음과 같이 열의 부분(예: 열 정의)을 지정합니다.

CREATE TABLE IF NOT EXISTS myTable(
  id BIGINT NOT NULL AUTO_INCREMENT,  
  first VARCHAR(104) NOT NULL DEFAULT '',  
  second DATETIME NULL,
  third DATETIME NULL,
  fourth VARCHAR(255) NULL,
  table_key varchar(64) AS (SHA2(concat_ws(',',first, second, third, fourth), 256)) stored unique NOT NULL,
  PRIMARY KEY (id),
  INDEX (first)
);

공식 문서도 참조해 주세요.여기서 데이터 유형 구문에 대한 설명을 찾을 수 있습니다.계산된 열의 정의는 데이터 유형의 일부입니다.

언급URL : https://stackoverflow.com/questions/60547871/created-table-with-generated-columns-throw-an-error