Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्या max_allowed_packet को बदले बिना mysql DB में बड़ा मान डालने का कोई तरीका है?

मैं हाल ही में इस समस्या पर ठोकर खाई। मेरे मामले में, सर्वर का max_allowed_packet 1 एमबी था और मैं इसे बदलने के लिए कुछ नहीं कर सकता था। और मैं 1 एमबी से ऊपर कुछ डेटा डाल रहा था। मुझे दो समाधान उम्मीदवार मिले।

1) सबसे पहले, JDBC का उपयोग करना। चूंकि MySQL Connector/J v3.1.9 , कुछ पैरामीटर हैं जिन्हें आप सेट कर सकते हैं, यहां JDBC URL में मेरे पैरामीटर्स का सेट है:

इन्हें जोड़ें:

blobSendChunkSize=50000&useServerPrepStmts=true&emulateUnsupportedPstmts=false&maxAllowedPacket=20000000

JDBC URL में परिणाम:

jdbc:mysql://serverip:3306/databasename?noDatetimeStringSync=true&blobSendChunkSize=50000&useServerPrepStmts=true&emulateUnsupportedPstmts=false&maxAllowedPacket=20000000

फिर आपको PreparedStatement . का उपयोग करना चाहिए अपनी प्रविष्टियां करने के लिए, और InputStream . का उपयोग करें बाइट सामग्री को setObject . के पैरामीटर के रूप में पास करने के लिए . ध्यान दें कि setObject बाइट सरणियों का उपयोग करने से बूँद विभाजन सक्षम नहीं होगा। मापदंडों का संयोजन, हाल ही का MySQL सर्वर (5.0.45 या बाद का), और InputStream LONG DATA . का उपयोग करके ब्लॉब डेटा भेजेगा तंत्र, बूँद को blobSendChunkSize . के अनुसार विभाजित करना ।

JDBC समाधान काम करता है और मैंने इसका परीक्षण किया है।

2) अब, दूसरा उम्मीदवार, PHP के mysqli . का उपयोग करना है ड्राइवर और उपयोग करें mysqli_send_long_data . आपकी सुविधा के लिए, PHP मैन्युअल उदाहरण से कॉपी किया गया:

<?php
$stmt = $mysqli->prepare("INSERT INTO messages (message) VALUES (?)");
$null = NULL;
$stmt->bind_param("b", $null);
$fp = fopen("messages.txt", "r");
while (!feof($fp)) {
    $stmt->send_long_data(0, fread($fp, 8192));
}
fclose($fp);
$stmt->execute();
?>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पायथन, ब्रू और MySQLdb

  2. MySQL में CHAR/VARCHAR स्ट्रिंग्स पर MIN () और MAX () कैसे काम करते हैं?

  3. मॉड रीराइट, टाइटल स्लग और htaccess

  4. auto_increment का उपयोग कर PHP लघु अद्वितीय आईडी पीढ़ी?

  5. MySQL - औसत घंटे निर्धारित करने के लिए JOIN और WHERE का उपयोग करना