ASSERTION을 생성하려고 할 때 설명할 수 없는 mysql 오류가 발생했습니다.
저는 현재 mysql을 배우고 있으며, 구현은 Arch Linux에서 MariaDB입니다.STATUS아래를 참조해 주십시오.
여기 문제가 있습니다.이 표는 다음과 같습니다.
MariaDB [biodb_sam]> SELECT * FROM pwms LIMIT 10;
+---------+-----+------+-------+
| tfs_id | pos | base | value |
+---------+-----+------+-------+
| hPDI060 | 1 | A | 0.01 |
| hPDI060 | 1 | C | 0.01 |
| hPDI060 | 1 | G | 0.97 |
| hPDI060 | 1 | T | 0.01 |
| hPDI060 | 2 | A | 0.01 |
| hPDI060 | 2 | C | 0.48 |
| hPDI060 | 2 | G | 0.5 |
| hPDI060 | 2 | T | 0.01 |
| hPDI060 | 3 | A | 0.625 |
| hPDI060 | 3 | C | 0.01 |
+---------+-----+------+-------+
10 rows in set (0.00 sec)
하지만 간단한 주장을 덧붙이고 싶을 때는pos항상 긍정적이기 때문에 다음 오류가 발생합니다.
MariaDB [biodb_sam]> CREATE ASSERTION foo CHECK(NOT EXISTS (SELECT * FROM pwms WHERE pos < 1));
ERROR 1064 (42000): 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 'ASSERTION foo CHECK(NOT EXISTS (SELECT * FROM pwms WHERE pos < 1))' at line 1
이 웹 페이지의 MariaDB 문서의 예시와 차이가 없습니다.그SELECT수표의 명세서 자체는 문제없이 작동하기 때문에 다른 곳에 문제가 있는 것이 틀림없습니다만, 잘 모르겠습니다.
서버 전체의 정보는 다음과 같습니다.
MariaDB [biodb_sam]> STATUS;
--------------
mysql Ver 15.1 Distrib 10.1.10-MariaDB, for Linux (x86_64) using readline 5.1
Connection id: 52
Current database: biodb_sam
Current user: sam@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server: MariaDB
Server version: 10.1.10-MariaDB-log MariaDB Server
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /run/mysqld/mysqld.sock
Uptime: 1 day 16 hours 56 min 2 sec
Threads: 4 Questions: 6264 Slow queries: 0 Opens: 142 Flush tables: 1 Open tables: 64 Queries per second avg: 0.0
42
--------------
링크된 페이지 상단에 있는 내용을 인용하고 싶습니다.
이 페이지는 Peter Gulutzan & Trudy Pelzer의 SQL-99 Complete, Really의 일부입니다.저자들은 친절하게도 우리가 이 책의 내용을 여기에 재현할 수 있도록 허락해 주었다.이 책은 SQL-99 표준에 관한 것이므로 이 책과 다른 페이지의 내용은 MariaDB에 직접 적용되지 않을 수 있습니다.네비게이션 바를 사용하여 책을 탐색합니다.
MariaDB 고유의 문서는 다릅니다.지원되는 CREATE 스테이트먼트의 전체 목록은 mariadb 웹사이트에서 확인할 수 있습니다.이 목록에는 CREATE ASSION이 포함되어 있지 않기 때문에 MariaDB는 이 기능을 지원하지 않습니다.따라서 다음 오류 메시지가 나타납니다.
다양한 CREATE 스테이트먼트에 관한 기사
- 데이터베이스 생성 데이터베이스 생성
- CREATE Event 신규 이벤트 생성 및 일정 설정 1
- CREATE FUNTION 저장된 함수를 만듭니다.
- CREATE FUNTION UDF 사용자 정의 함수 생성
- 인덱스 생성 하나 이상의 열에 인덱스를 만듭니다.
- CREATE Procedure 저장 프로시저를 만듭니다.
- 역할 생성 새 역할 추가
- CREATE SERVER 서버 정의 5
- CREATE TABLE 새 테이블 만들기
- CREATE TABlesPACE CREATE TABlesPACE는 Maria에서 사용할 수 없습니다.DB
- CREATE 트리거 새 트리거 생성
- CREATE User 새 MariaDB 계정 만들기
- CREATE VIEW 뷰 생성 또는 바꾸기
이것 대신에 체크 제약 조건을 사용하는 것을 추천합니다만, 이것은 mysql에서는 동작하지 않습니다.음의 값을 피하기 위해 이 열에 부호 없는 정수를 유형으로 만드는 아이디어가 하나 있습니다.
언급URL : https://stackoverflow.com/questions/34769321/unexplainable-mysql-error-when-trying-to-create-assertion
'itsource' 카테고리의 다른 글
| @Transactional annotation: 인터페이스 정의 또는 구현 클래스 어디에 배치해야 합니까? (0) | 2022.12.24 |
|---|---|
| 페이지 새로 고침 없이 폼 데이터를 PHP로 전달하는 AJAX와 함께 폼 제출 (0) | 2022.12.24 |
| 수정된 환경에서 Python 하위 프로세스/팝업 (0) | 2022.12.24 |
| Java에서 파일을 다른 위치로 이동하려면 어떻게 해야 합니까? (0) | 2022.12.24 |
| 2개의 인덱스의 "OR"을 더 빠른 솔루션으로 대체(UNION)? (0) | 2022.12.24 |