반응형
Vapor와 함께 사용할 수 있도록 MariaDB에 UUID 저장
FluentMy를 사용하고 싶다데이터를 저장하기 위해 Vapor에 SQL이 있지만 UUID를 제대로 읽을 수 없습니다.
MariaDB에서 제공하는 UUID() 함수를 사용하면 모든 것이 정상이지만 FluentMy를 사용하면SQL, UUID 스크램블: (첫 번째 레코드:UUID 사용(), 두 번째 레코드: Vapor)
MariaDB [someDB]> select * from Poll;
+--------------------------------------+-------+---------+---------+--------+--------+
| id | title | option1 | option2 | votes1 | votes2 |
+--------------------------------------+-------+---------+---------+--------+--------+
| 88a18a58-2fcd-11ea-9f62-e283e8014c79 | test | bla | bla | 0 | 0 |
| 7??/.?E??*_P?v | bla | option1 | option2 | 1 | 2 |
+--------------------------------------+-------+---------+---------+--------+--------+
2 rows in set (0.00 sec)
이것이 제 모델입니다.
import Foundation
import FluentMySQL
import Vapor
struct Poll: Content, MySQLUUIDModel, Migration {
typealias ID = UUID
static let entity: String = "Poll"
var id: UUID?
var title: String
var option1: String
var option2: String
var votes1: Int
var votes2: Int
}
이게 내 테이블이야
MariaDB [someDB]> describe Poll;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| id | varchar(191) | YES | | NULL | |
| title | varchar(191) | YES | | NULL | |
| option1 | varchar(191) | YES | | NULL | |
| option2 | varchar(191) | YES | | NULL | |
| votes1 | int(10) | YES | | NULL | |
| votes2 | int(10) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
하지만 데이터를 가져오기 위해 Vapor를 사용하면 모든 것이 괜찮아 보입니다.내가 뭘 잘못하고 있지?
컬을 통한 출력:
curl http://locurl http://localhost:8080/polls/list
[{"option1":"bla","id":"38386131-3861-3538-2D32-6663642D3131","title":"test","option2":"bla","votes1":0,"votes2":0},{"option1":"option1","id":"373F3F2F-2E3F-453F-3F0E-2A5F503F7607","title":"bla","option2":"option2","votes1":1,"votes2":2}]
잘 부탁드립니다.
Vapor를 사용하여 Vapor를 생성할 경우UUID
필드 자체, 데이터 유형의 필드 생성varbinary(16)
것은 아니다.varchar(191)
이것은 MariaDB/MySQL의 UUID 필드의 기본 형식과 일치합니다.
Vapor 외부에서 데이터가 생성되는 레거시 애플리케이션인 것 같습니다.기본 이진 값이 아닌 UUID 값의 문자열 표현을 저장하는 것처럼 보입니다.2진수 값 저장varchar
필드에서는 모든 값을 인쇄할 수 있다고 가정할 경우에만 문제가 발생합니다.그러나 같은 열에 문자열 형식과 이진 형식 값이 함께 있으면 문제가 발생할 수 있습니다.
언급URL : https://stackoverflow.com/questions/59601648/saving-an-uuid-in-mariadb-for-use-with-vapor
반응형
'source' 카테고리의 다른 글
설명: MariaDB에서 MySQL로 이행한 후 "DEPEND SUBQUERY"가 표시되며 매우 느림 (0) | 2022.12.05 |
---|---|
PHP를 통한 SSH 명령 실행 방법 (0) | 2022.11.26 |
AndroidRuntime 오류: 구획: 값을 정렬할 수 없습니다. (0) | 2022.11.26 |
잘못된 접두사 키 MySQL (0) | 2022.11.26 |
사용자로부터 Yes/No 프롬프트를 표시하지 않고 자체 서명 증명서 추가 (0) | 2022.11.26 |