Mysql में LOAD DATA LOCAL INFILE को सक्षम करना


10

LOAD DATA LOCAL INFILEडिफ़ॉल्ट रूप से सक्षम नहीं है। आम तौर पर, रखकर सक्षम होना चाहिए local-infile=1में my.cnf। लेकिन यह सभी प्रतिष्ठानों के लिए काम नहीं करता है। मेरे अनुभव में, यह डेबियन 7 के लिए काम करता है, लेकिन डेबियन 7 न्यूनतम नहीं, हालांकि दोनों स्थापना एक ही पूर्व-निर्मित डेब पैकेज से आती हैं। दोनों OpenVZ VPS पर।

डिबग करने के लिए कैसे local-infile=1एक स्थापना के लिए काम नहीं करता है, और कैसे सुरक्षित रूप से सक्रिय करने के लिए LOAD DATA LOCAL INFILE?

जवाबों:


19

यदि MySQL डेबियन -7 न्यूनतम का उपयोग नहीं किया जा सकता है local_infile, तो यह देखने के लिए कि यह डिफ़ॉल्ट रूप से अक्षम है या यदि local_infileडेबियन -7 के लिए सक्षम है, तो यह देखने के लिए उपयोग की जाने वाली सभी मेक फ़ाइलों के आसपास देखें ।

उस तरह का समय लेने से पहले, कृपया निम्नलिखित चलाएं:

SHOW GLOBAL VARIABLES LIKE 'local_infile';
SET GLOBAL local_infile = 'ON';
SHOW GLOBAL VARIABLES LIKE 'local_infile';

इसे निम्नलिखित प्रतिध्वनित करना चाहिए:

mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

mysql> SET GLOBAL local_infile = 'ON';
Query OK, 0 rows affected (0.06 sec)

mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | ON    |
+---------------+-------+
1 row in set (0.00 sec)

mysql>

यदि यह अभी भी कहता है 'OFF', तो इसे सक्षम करने के लिए संकलक सेटिंग्स के भीतर गहराई से देखें।

यदि यह आपके लिए सेट है 'ON', तो आप ठीक हैं।

कृपया ध्यान दें मैंने नहीं कहा

SET GLOBAL local_infile = 1;

मैंने कहा उपयोग करें

SET GLOBAL local_infile = 'ON';

विकल्प local_infile बूलियन, संख्यात्मक नहीं है

यदि इसमें यह सेटिंग my.cnf

[mysqld]
local_infile=ON

और mysql को पुनः आरंभ करने से भी काम नहीं होता है, आपको mysql को कुछ इस तरह से शुरू करना होगा:

echo "SET GLOBAL local_infile = 'ON';" > /var/lib/mysql/init_file.sql
chown mysql:mysql /var/lib/mysql/init_file.sql
service mysql stop
service mysql start --init-file=/var/lib/mysql/init_file.sql
rm -f /var/lib/mysql/init_file.sql

या शायद यह करने के लिए जोड़ने my.cnf

[mysqld]
init-file=/var/lib/mysql/init_file.sql

फिर से शुरू करें।

कोशिश करो !!!


डिबगिंग के लिए आपके व्यावहारिक निर्देश के लिए धन्यवाद, मुझे वास्तव में क्या चाहिए। पहले चरण में, यह पता चला, मैं गलत रास्ते पर हूं, जैसा कि दिखाया गया है local_infile | ON । ऐसा लगता है कि समस्या mysql नहीं है, लेकिन PHPया शायद mysql-PHP कनेक्टर / ड्राइवर (mysqli) है।
Googlebot 5

मुझे mspli के साथ काम करने के लिए इसे php में इस्तेमाल करना था: $con = mysqli_init(); $con->options(MYSQLI_OPT_LOCAL_INFILE, true);
Radu Bogdan

PHP में सक्षम mysqli.allow_local_infile = Onकरना मेरे लिए अच्छा GLOBAL local_infile = 'ON';था क्योंकि पहले से ही था।
रोलैंड .EU

0

Windows पर MySQL 8.0.20 की डिफ़ॉल्ट स्थापना के लिए:

  1. पर स्थित इनिशियलाइज़ेशन फ़ाइल के लिए देखें C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
  2. my.iniएक पाठ संपादक के साथ फ़ाइल खोलें ।
  3. शीर्षकों के लिए [client], [mysql]ग्राहक अनुभाग के [mysqld]तहत और सर्वर अनुभाग के तहत देखें।
  4. इन शीर्ष लेखों में से प्रत्येक के तहत निम्नलिखित कथन जोड़ें:

    local_infile=ON

  5. फ़ाइल को सहेजें और Windows स्थानीय सेवाओं के तहत MySQL80 सेवा को पुनरारंभ करें।

यह काम करना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.