MySQL এ লোড ডেটা স্থানীয় তথ্য সক্ষম করা


10

LOAD DATA LOCAL INFILEডিফল্টরূপে সক্ষম হয় না। সাধারণত, এটা স্থাপন দ্বারা সক্ষম করা আবশ্যক local-infile=1মধ্যে my.cnf। তবে এটি সমস্ত স্থাপনার জন্য কাজ করে না। আমার অভিজ্ঞতা হিসাবে, এটি ডেবিয়ান 7 এর পক্ষে কাজ করেছে, তবে ডেবিয়ান 7 ন্যূনতম নয়, যদিও উভয় ইনস্টলেশন একই পূর্বনির্ধারিত ডিবে প্যাকেজ থেকে আসে। উভয়ই ওপেনভিজেড ভিপিএসে।

কীভাবে ডিবাগ করবেন কেন local-infile=1একটি ইনস্টলেশন কাজ করে না, এবং কীভাবে নিরাপদে সক্রিয় করা যায় LOAD DATA LOCAL INFILE?

উত্তর:


19

মাইএসকিউএল ডেবিয়ান--ন্যূনতম ব্যবহার করতে না পারলে 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

এবং মাইএসকিএল পুনরায় চালু করা কোনওভাবেই কাজ করে না, আপনাকে এই জাতীয় কিছু দিয়ে মাইএসকিএল শুরু করতে হবে:

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 । দেখে মনে হচ্ছে সমস্যাটি মাইএসকিএল নয়, তবে PHPসম্ভবত মাইএসকিএল-পিএইচপি সংযোগকারী / ড্রাইভার (মাইএসকিলি)।
গুগলবট

এটি এমসকলি দিয়ে কাজ করতে আমাকে পিএইচপি ব্যবহার করতে হয়েছিল: $con = mysqli_init(); $con->options(MYSQLI_OPT_LOCAL_INFILE, true);
রাদু বোগদান

পিএইচপি সক্রিয় করা mysqli.allow_local_infile = Onআমার পক্ষে ভাল GLOBAL local_infile = 'ON';ছিল কারণ ইতিমধ্যে চালু ছিল।
Roland.EU

0

উইন্ডোজ মাইএসকিউএল 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. ফাইলটি সংরক্ষণ করুন এবং উইন্ডোজ স্থানীয় পরিষেবাগুলির অধীনে মাইএসকিউএল 80 পরিষেবাটি পুনরায় চালু করুন।

এটি কাজ করা উচিত.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.