মাইএসকিউএল ক্ষেত্রে সারণীর নামগুলি সংবেদনশীল?


173

মাইএসকিউএল ক্ষেত্রে সারণীর নামগুলি সংবেদনশীল?

আমার উইন্ডোজ ডেভলপমেন্ট মেশিনে আমার কাছে থাকা কোডটি আমার টেবিলগুলিকে জিজ্ঞাসা করতে সক্ষম হয়েছে যা সমস্ত ছোট হাতের আকারে উপস্থিত বলে মনে হয়। যখন আমি আমাদের ডাটাসেন্টারে টেস্ট সার্ভারে স্থাপন করি তখন টেবিলের নামগুলি বড় হাতের অক্ষর দিয়ে শুরু হয়।

আমরা যে সার্ভারগুলি ব্যবহার করি তা সবগুলি উবুন্টুতে।


উত্তর:


203

সাধারণভাবে:

উইন্ডোজে ডাটাবেস এবং টেবিলের নামগুলি সংবেদনশীল নয়, এবং ইউনিক্সের বেশিরভাগ ধরণের ক্ষেত্রে সংবেদনশীল নয়।

মাইএসকিউএল-তে ডাটাবেসগুলি ডেটা ডিরেক্টরিগুলির মধ্যে ডিরেক্টরিগুলির সাথে মিল রাখে। ডাটাবেসের মধ্যে প্রতিটি সারণী ডাটাবেস ডিরেক্টরিতে অন্তত একটি ফাইলের সাথে সম্পর্কিত হয়। ফলস্বরূপ, অন্তর্নিহিত অপারেটিং সিস্টেমের ক্ষেত্রে সংবেদনশীলতা ডাটাবেস এবং সারণির নামের ক্ষেত্রে সংবেদনশীলতায় একটি ভূমিকা পালন করে।

সিস্টেম ভেরিয়েবলটি lower_case_table_names( [mysqld] এর অধীনে my.cnf কনফিগারেশন ফাইলে) ব্যবহার করে কীভাবে ডিস্কে টেবিলের নাম সংরক্ষণ করা হয় তা কনফিগার করতে পারেন ।

বিভাগটি পড়ুন: 10.2.2 সনাক্তকারী কেস সংবেদনশীলতা আরও তথ্যের জন্য।


40
আমার কোডটি আমার স্থানীয় উইন্ডোজ পরিবেশে দুর্দান্ত কাজ করায় এটি সম্পূর্ণরূপে আমাকে জ্বালিয়ে দিয়েছে, তবে লিনাক্সের উত্পাদনে সরানোর সময় ব্যতিক্রম ছুঁড়ে ফেলা হচ্ছে !! ধন্যবাদ!
পোর্টফোরওয়ার্ডপোডকাস্ট

6
এই উত্তরের একটি সতর্কতা রয়েছে, যা ডকুমেন্টেশনে উল্লেখ করা হয়নি: InnoDB ডাটাবেস এবং টেবিলের জন্য ফাইল বা ডিরেক্টরি নাম ব্যবহার করে না, এবং সুতরাং এর সংক্ষিপ্ত সিস্টেমে চালিত হওয়ার পরেও এর বিষয়গুলি সর্বদা সংবেদনশীল থাকে are এর কারণে কী কী ভুল হতে পারে তার উদাহরণের জন্য এই প্রশ্নটি দেখুন: stackoverflow.com/questions/23182969/…
জুলাই

এটি পুরো গল্প নয়। স্টিফেনলম্বার্টের উত্তরটি কনফিগারযোগ্য হিসাবে দেখুন
ক্রিস উড

1
ডিফল্টরূপে বেশিরভাগ ম্যাক কম্পিউটারগুলি কেস-সংবেদনশীল ফাইল সিস্টেম ব্যবহার করে। যদিও আপনার ফাইল সিস্টেমটি কেস-সংবেদনশীল হতে বেছে নিতে পারেন।
চাদ

এটি এবং ফাইলের নেম কেস সংবেদনশীলতা হ'ল ওয়েব ডেভেলপার হিসাবে উবুন্টুতে যাওয়ার কারণকে আমি অন্যতম কারণ।
মুহাম্মদ বিন ইউসরাত

99

উইন্ডোজে ডেটাবেস এবং টেবিলের নামগুলি সংবেদনশীল নয়, এবং ইউনিক্স বা লিনাক্সের বেশিরভাগ প্রকারের ক্ষেত্রে সংবেদনশীল নয়।

সমস্যাটি সমাধান করার জন্য লোয়ার_সেস_সারণযোগ্য_নামগুলিকে 1 এ সেট করুন

lower_case_table_names = 1

এটি আপনার সমস্ত টেবিলগুলি ছোট ছোট করে তুলবে, আপনি সেগুলি যেভাবেই লিখুন


1
অন্তর্নিহিত ইউনিক্স সত্ত্বেও এগুলি ম্যাকওএস এক্সে সংবেদনশীল নয়। এটি সম্ভবত ম্যাকের মাইএসকিউএল-এর মধ্যে স্বয়ংক্রিয়রূপে অনুসন্ধানগুলি সারণী বা ক্ষেত্রের নামগুলির ক্ষেত্রে কেস-সংবেদনশীল।
ডেভিড

হ্যাঁ, তবে এই বক্তব্য রাখার কি আছে? আমার ধারণা এটি চালু আছে: /etc/mysql/my.cnf [mysql] গ্রুপের নীচে। তবে এটি যথেষ্ট নয়, এখনও আরও কিছু করা দরকার (অবশ্যই
মাইএসকিএল

1
এটি কেবলমাত্র নতুন টেবিলগুলিকে প্রভাবিত করে। এই সেটিংটি পরিবর্তন করার আগে বিদ্যমান টেবিলগুলির নাম ছোট ছোট করে রাখতে হবে।
মার্টিন

19

মাইএসকিউএলে থাকা সারণির নামগুলি ফাইল সিস্টেম এন্ট্রি, সুতরাং অন্তর্নিহিত ফাইল সিস্টেমটি যদি সেগুলি সংবেদনশীল হয়।


3
আমি মনে করি না যে এটি সর্বদা সত্যই InnoDB টেবিলগুলির জন্য।
সাইমন পূর্ব

@ সিমোনইস্ট আপনি কি দয়া করে এমন একটি কারণ দেবেন যা আপনি ভাবেন?
আর্য

16

এটি lower_case_table_namesসিস্টেম ভেরিয়েবলের উপর নির্ভর করে :

show variables where Variable_name='lower_case_table_names'

এর জন্য তিনটি সম্ভাব্য মান রয়েছে:

  • 0- CREATE TABLEবা CREATE DATABASEবিবৃতিতে বর্ণিত লেটারকেস নামের তুলনাগুলি সংবেদনশীল।
  • 1 - সারণীর নামগুলি ডিস্কের ছোট হাতের মধ্যে সংরক্ষণ করা হয় এবং নামের তুলনাগুলি সংবেদনশীল নয়।
  • 2- CREATE TABLEবা CREATE DATABASEস্টেটমেন্টে বর্ণিত লেটারকেস , তবে মাইএসকিউএল এগুলি লুকিংয়ের দিকে ছোট আকারে রূপান্তর করে। নামের তুলনাগুলি সংবেদনশীল নয়।

নথিপত্র


11
  1. ফাইলটি সনাক্ত করুন /etc/mysql/my.cnf

  2. নিম্নলিখিত লাইনগুলি যুক্ত করে ফাইল সম্পাদনা করুন:

    [mysqld]

    lower_case_table_names=1

  3. sudo /etc/init.d/mysql restart

  4. চালানোর mysqladmin -u root -p variables | grep tableযে চেক করতে lower_case_table_namesহয় 1এখন

এগুলি কার্যকর করতে আপনার এই টেবিলগুলি পুনরায় তৈরি করতে হবে

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