생성된 저장 프로시저 실패
이것이 코드입니다.
CREATE TABLE `church` (
`ID` int(10) UNSIGNED NOT NULL,
`StudentID` int(11) NOT NULL,
`semesterID` int(11) NOT NULL,
`attendedWed` int(11) NOT NULL,
`attendedFri` int(11) NOT NULL,
`attendedSabM` int(11) NOT NULL,
`attendedSabE` int(11) NOT NULL,
`ChurchScore` double(10,2) GENERATED ALWAYS AS ((((((`attendedWed` + `attendedFri`) + `attendedSabM`) + `attendedSabE`) * 100) / 60)) STORED
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
이것은 오류입니다.
작업 실패:SQL 스크립트를 데이터베이스에 적용하는 동안 오류가 발생했습니다.실행 중: ALTER TABLE
citizenshipgroup3
.church
열 변경ChurchScore
ChurchScore
DUBLE(10,2) NULL DefaultattendedWed
;오류 1064:SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 '근처에 사용할 올바른 구문을 확인하십시오.
attendedWed
' 2행 SQL 문: ALTER TABLEcitizenshipgroup3
.church
열 변경ChurchScore
ChurchScore
DUBLE(10,2) NULL DefaultattendedWed
당신의 구문은 괜찮습니다.문제는 MySQL이 생성된 열을 5.7까지 지원하지 않는다는 것입니다.아마도 이전 버전을 사용하고 있을 것입니다.
아마도 가장 간단한 해결책은 계산을 위해 뷰를 사용하는 것일 것입니다.
다음 시간에 오류가 나타납니다.ALTER TABLE
, 열을 수정하려고 할 때ChurchScore
세팅하기DEFAULT
다른 열을 포함하는 식의 값attendedWed
.
또한 당신의 오류 메시지는 MySQL이 아닌 MariaDB에서 온 것 같습니다.
Mariadb 설명서에서:
MariaDB 10.2.1부터는 DEFAULT에서 대부분의 함수를 사용할 수 있습니다. 표현식에는 괄호가 있어야 합니다.DEFAULT에서 비결정론적 함수를 사용하면 테이블에 대한 모든 삽입이 행 모드로 복제됩니다.DEFAULT 식에서 이전 열을 참조할 수도 있습니다.
CREATE TABLE t1 (a int DEFAULT (1+1), b int DEFAULT (a+1)); CREATE TABLE t2 (a bigint primary key DEFAULT UUID_SHORT());
따라서 다음과 같은 몇 가지 사항을 보장해야 합니다.
- MariaDB 버전을 10.2.1 이상으로 업그레이드합니다.최신 버전으로 업그레이드하는 것이 좋습니다(현재 10.3+입니다).
- 에 지정된 표현 주위에 괄호를 사용해야 합니다.
DEFAULT
절
그래서.ALTER TABLE
문장은 다음과 같습니다.
ALTER TABLE `citizenshipgroup3`.`church`
CHANGE COLUMN `ChurchScore` `ChurchScore` DOUBLE(10,2) NULL
DEFAULT (attendedWed) ;
언급URL : https://stackoverflow.com/questions/53467871/failed-generated-stored-procedure
'programing' 카테고리의 다른 글
도커 컨테이너에서 php의 mysql 확장을 활성화하는 방법은? (0) | 2023.11.06 |
---|---|
Google CDN의 최신 jQuery 버전 (0) | 2023.11.06 |
빌드의 일부로 Xml 직렬화 어셈블리 생성 (0) | 2023.11.06 |
Oracle: 조건을 포함한 전체 텍스트 검색 (0) | 2023.11.06 |
Wildfly 및 자동으로 데이터베이스에 다시 연결 (0) | 2023.11.06 |