MariaDB 데이터베이스에서 mediumblob 값 업데이트 실패
저는 MS Access Frontend로 서버측 MariaDB 데이터베이스를 사용하고 있습니다.nomapp 데이터 테이블의 데이터베이스에 다음 구조로 이진 파일을 업로드하려고 합니다.
IDint(11)
appCode 미디엄블롭
업로드에 사용되는 기능은 다음과 같습니다.
Function saveFileToDB(ID As Long, fName As String)
Dim myConn As New ADODB.connection
Dim rsADO As New ADODB.Recordset
Dim st As New ADODB.Stream
On Error Resume Next
strSQL = "SELECT nomappdata.* FROM nomappdata WHERE ID = " & ID
With myConn
.ConnectionString = getConnStrMySQL("N")
.Open
End With
If myConn.Errors.Count = 0 Then
With rsADO
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.ActiveConnection = myConn
.Open strSQL
End With
With st
.Type = adTypeBinary
.Open
.LoadFromFile fName
End With
With rsADO
.Fields("appCode").Value = st.Read
.Update
End With
End If
st.Close
Set st = Nothing
rsADO.Close
Set rsADO = Nothing
myConn.Close
Set myConn = Nothing
End Function
제가 업로드 하려고 하는 테스트 파일 크기는 약 73kByte입니다.
연결이 작동했습니다(상태 = 1 ).
스트림 개체가 파일 데이터를 로드했습니다(테스트됨).
레코드 집합을 읽었습니다(테스트됨).
크기가 64kBytes 미만인 파일의 경우 스크립트는 정상적으로 작동하지만 그렇지 않으면 업데이트가 작동하지 않기 때문에 업데이트 전에 이전 값을 삭제해야 합니다.
문제는 디버그 프롬프트가 "에 도달하는 경우입니다."Update" 라인, 액세스가 잠시 대기하다가 예기치 않게 충돌합니다.어떻게 하면 이 문제를 해결할 수 있을까요?
저는 다음 소프트웨어를 사용하고 있습니다.
Microsoft Access for Microsoft 365 MSO(16.0.13001.20338) 64비트 MariaDB 10.1.40-MariaDB mariadb-connector-odbc-3.1.9-win64
# The MySQL server
[mysqld]
port= 3306
socket = "D:/xampp/mysql/mysql.sock"
basedir = "D:/xampp/mysql"
tmpdir = "D:/xampp/tmp"
datadir = "D:/xampp/mysql/data"
pid_file = "mysql.pid"
# enable-named-pipe
key_buffer = 16M
max_allowed_packet = 16M
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error = "mysql_error.log"
수정(작업)코드:
Dim fileData() As Byte
With st
.Type = adTypeBinary
.Open
.LoadFromFile fName
End With
With rsADO
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.ActiveConnection = myConn
.Open strSQL
.Fields("appCode").Value = st.Read
.Update
.Close
End With
"MariaDB ODBC 3.1 드라이버"의 버그(ODBC-251)인 것 같습니다.
대신 "MySQL/ODBC Connector 8.0.19"(또는 최신 버전)를 사용합니다!
대안:
언급URL : https://stackoverflow.com/questions/63068681/fail-on-update-a-mediumblob-value-in-mariadb-database
'programing' 카테고리의 다른 글
data.frame 행을 N번 반복합니다. (0) | 2023.10.26 |
---|---|
.xlsx에서 셀 색상 가져오기 (0) | 2023.10.26 |
MySQL: 자동 증가 열이 있는 테이블에 삽입 후 예기치 않은 SELECT 결과 (0) | 2023.10.21 |
Node.js에서 Powershell 스크립트 실행 (0) | 2023.10.21 |
C#에서 (마지막 부분의) 현재 디렉터리 이름 가져오기 (0) | 2023.10.21 |