কলামের নাম হিসাবে ব্যবহৃত সংরক্ষিত শব্দগুলি কীভাবে আমি পালাতে পারি? মাইএসকিউএল / সারণী তৈরি করুন


139

আমি নেট থেকে ক্লাস থেকে টেবিল তৈরি করছি এবং একটি সমস্যা হচ্ছে একটি শ্রেণীর ক্ষেত্রে একটি ক্ষেত্রের নাম থাকতে পারে keyযা সংরক্ষিত মাইএসকিউএল কীওয়ার্ড। আমি কীভাবে এটি তৈরির টেবিলের বিবৃতিতে এড়াতে পারি? (দ্রষ্টব্য: নীচের অন্যান্য সমস্যাটি হ'ল পাঠ্যটি অবশ্যই সূচক / অনন্য হতে একটি নির্দিষ্ট আকারের হবে)

create table if not exists misc_info (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
key TEXT UNIQUE NOT NULL,
value TEXT NOT NULL)ENGINE=INNODB;

উত্তর:


184

এএনএসআই এসকিউএল মোড সক্ষম থাকলে আপনি ডাবল উদ্ধৃতি ব্যবহার করতে পারেন

CREATE TABLE IF NOT EXISTS misc_info
  (
     id    INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
     "key" TEXT UNIQUE NOT NULL,
     value TEXT NOT NULL
  )
ENGINE=INNODB; 

বা মালিকানা পেছনের টিক অন্যথায় পালাচ্ছে। ( `বিভিন্ন উত্তর কীবোর্ড বিন্যাসে অক্ষরটি কোথায় পাওয়া যাবে এই উত্তরে ) াকা আছে )

CREATE TABLE IF NOT EXISTS misc_info
  (
     id    INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
     `key` TEXT UNIQUE NOT NULL,
     value TEXT NOT NULL
  )
ENGINE=INNODB; 

(উত্স: মাইএসকিউএল রেফারেন্স ম্যানুয়াল, 9.3 সংরক্ষিত শব্দ )


5
IMHO আপনার সর্বদা ক্ষেত্রের নাম এবং টেবিলের নাম উদ্ধৃত করা উচিত।
rjmunro

10
@ আরজমুনরো - এটি করা কিছুটা রক্ষণাত্মক কারণ এটি আপনাকে পরবর্তী সংরক্ষিত সংস্করণগুলিতে নতুন সংরক্ষিত কীওয়ার্ডগুলি প্রবর্তন করা থেকে রক্ষা করে তবে আমি ভিজ্যুয়াল গোলমাল পছন্দ করি না।
মার্টিন স্মিথ

একই ফিক্স (পালাতে ডাবল কোট) ক্যাসান্দ্রার সি সিকিউলে কীওয়ার্ডগুলির জন্যও কাজ করে। কিছুটা অফ-টপিক, আমি জানি, তবে এই থ্রেডটি ক্যাসান্দ্রা-নির্দিষ্ট অনুসন্ধানে উঠে এসেছে।
গডফ্রে ডিউক

মাইএসকিউএল রেফারেন্স ম্যানুয়াল লিঙ্কটি আপাতত নষ্ট হয়ে গেছে। আসল লিঙ্ক: dev.mysql.com/doc/refman/5.7/en/keywords.html
Miha_x64

71

আপনার পিছনে টিক অক্ষর (`) ব্যবহার করা উচিত:

create table if not exists misc_info (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
`key` TEXT UNIQUE NOT NULL,
value TEXT NOT NULL)ENGINE=INNODB;

15

আপনি যদি বিভিন্ন এসকিউএল সার্ভারের মধ্যে বহনযোগ্যতা আগ্রহী হন তবে আপনার এএনএসআই এসকিউএল কোয়েরি ব্যবহার করা উচিত। এএনএসআই এসকিউএল-এ স্ট্রাইকিং স্ট্রিং ডাবল কোট (") ব্যবহার করে করা হয় Unfortunately দুর্ভাগ্যক্রমে, এই পালানোর পদ্ধতিটি মাইএসকিউএলে পোর্টেবল নয়, যদি না এটি এএনএসআই সামঞ্জস্যতা মোডে সেট না করা হয়।

ব্যক্তিগতভাবে, আমি সর্বদা আমার মাইএসকিউএল সার্ভারটি --sql- মোড = 'এএনএসআই' যুক্তি দিয়ে শুরু করি কারণ এটি উভয় পদ্ধতির জন্য পলায়নের অনুমতি দেয়। আপনি যদি মাইএসকিউএল সার্ভারে চালিত হতে চলেছেন এমন প্রশ্নগুলি লিখছেন যা সেটআপ করা হয়নি বা আপনার দ্বারা নিয়ন্ত্রিত নয়, আপনি এখানে যা করতে পারেন তা এখানে:

  • আপনার সমস্ত এসকিউএল অনুসন্ধানগুলি এএনএসআই এসকিউএল-এ লিখুন
  • নিম্নলিখিত মাইএসকিউএল নির্দিষ্ট কোয়েরিতে এগুলি বন্ধ করুন:

    SET @OLD_SQL_MODE=@@SQL_MODE;
    SET SESSION SQL_MODE='ANSI';
    -- ANSI SQL queries
    SET SESSION SQL_MODE=@OLD_SQL_MODE;

এইভাবে একমাত্র মাইএসকিউএল নির্দিষ্ট অনুসন্ধানগুলি আপনার। এসকিউএল স্ক্রিপ্টের শুরু এবং শেষের দিকে the আপনি যদি কোনও আলাদা সার্ভারের জন্য কী পাঠাতে হয় তবে কেবল এই 3 টি কোয়েরি সরিয়ে ফেলুন এবং আপনি প্রস্তুত। এমনকি আরও সুবিধার্থে আপনি নামের জন্য একটি স্ক্রিপ্ট তৈরি করতে পারেন: স্ক্রিপ্ট_মিসকিএল.এসকিএল যা উপরের মোড সেটিং কোয়েরিগুলিকে ধারণ করবে, একটি স্ক্রিপ্ট_সান.এসকিএল স্ক্রিপ্ট উত্পন্ন করবে এবং মোডটি পুনরায় সেট করবে।


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