আমি দুর্ঘটনাক্রমে কেবলমাত্র ওয়ানওয়াই_এফএলএল_গ্রো_বিওয়াই মোডটি সক্ষম করেছি:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
আমি কীভাবে এটি অক্ষম করব?
column
আপনার ক্যোয়ারী পুনঃনির্মাণ করতে ANY_VALUE ( ) ফাংশনটি ব্যবহার করতে পারেন । ডকটি এখানে
আমি দুর্ঘটনাক্রমে কেবলমাত্র ওয়ানওয়াই_এফএলএল_গ্রো_বিওয়াই মোডটি সক্ষম করেছি:
SET sql_mode = 'ONLY_FULL_GROUP_BY';
আমি কীভাবে এটি অক্ষম করব?
column
আপনার ক্যোয়ারী পুনঃনির্মাণ করতে ANY_VALUE ( ) ফাংশনটি ব্যবহার করতে পারেন । ডকটি এখানে
উত্তর:
সমাধান 1: মাইএসকিএল কনসোল থেকে ONLY_FULL_GROUP_BY সরান
mysql > SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
আপনি এখানে আরও পড়তে পারেন
সমাধান 2: পিএইচপিএমইডমিন থেকে কেবলমাত্র_ফুল্ল_গ্রো_বাই সরান
REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')
, মাইএসকিউএল যাইহোক রেকর্ড থেকে অযাচিত কমাগুলি সরিয়ে দেয়। ওপির উত্তর সঠিক।
GLOBAL
আমার জন্য কাজ করে না, কিন্তু SESSION
করেছে। SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
আপনার বর্তমান মাইএসকিএল সেটিংস রাখতে এবং অক্ষম করতে ONLY_FULL_GROUP_BY
আমি আপনার phpmyadmin বা আপনি যে কোনও ক্লায়েন্ট ব্যবহার করছেন এবং টাইপ করুন:
SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','') copy_me
আপনার my.ini
ফাইলটি পরবর্তী কপি ফলাফল ।
পুদিনা :sudo nano /etc/mysql/my.cnf
উবুন্টু 16 এবং তার বেশি :sudo nano /etc/mysql/my.cnf
উবুন্টু 14-16 :/etc/mysql/mysql.conf.d/mysqld.cnf
copy_me
ফলাফলটিতে একটি দীর্ঘ পাঠ থাকতে পারে যা ডিফল্টরূপে ছাঁটাই করা যেতে পারে। নিশ্চিত করুন যে আপনি পুরো পাঠ্যটি অনুলিপি করেছেন!পুরানো উত্তর:
যদি আপনি স্থায়ীভাবে ত্রুটিটি অক্ষম করতে চান " SELECT তালিকার এক্সপ্রেশন # N গ্রোপ BY ক্লোজে নেই এবং এতে অবিকৃত কলাম 'db.table.COL' রয়েছে যা GROUP BY ধারাতে কলামের সাথে কার্যকরীভাবে নির্ভর করে না; এটি স্ক্যাল_মোড = কেবল_ফুল_গ্রুপ_বিহীন inc "এই পদক্ষেপগুলি করুন:
sudo nano /etc/mysql/my.cnf
ফাইলের শেষে এটি যুক্ত করুন
[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sudo service mysql restart
মাইএসকিউএল পুনরায় চালু করতে
এটি সমস্ত ব্যবহারকারীদের ONLY_FULL_GROUP_BY
জন্য অক্ষম করবে
/etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
তা এই ফাইলটিতে নাও থাকতে পারে, এটি একটি অন্তর্ভুক্ত ডিরেক্টরিতে থাকতে পারে। প্রথমে এই আদেশটি ব্যবহার করুন: grep -R "\[mysqld\]" *
সেখানে কী আছে তা দেখার জন্য - এবং সেই বিষয়ে চেষ্টা করুনgrep -R "\bsql_mode\b" *
ব্যবহারে সতর্কতা অবলম্বন করুন
SET sql_mode = ''
এটি আসলে বর্তমানে সক্ষম সমস্ত মোডগুলি সাফ করে ars আপনি যদি অন্য সেটিংসের সাথে গোলযোগ করতে না চান তবে আপনি এটি করতে চাইবেন
SELECT @@sql_mode
প্রথমে সক্ষম মোডের কমা-বিচ্ছিন্ন তালিকা পেতে, তারপরে ONLY_FULL_GROUP_BY
বিকল্প ছাড়াই এটিকে এই তালিকায় সেট করুন ।
then SET it to this list without the ONLY_FULL_GROUP_BY option.
?
SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
sql_mode=<comma-separated-list>
তবে এর মতো একটি লাইন দিয়ে my.cnf সম্পাদনা করুন: তারপরে আপনার সার্ভারটি থামিয়ে শুরু করুন। আপনার অপারেটিং সিস্টেমের জন্য দস্তাবেজগুলি, এবং সম্পাদনার সর্বোত্তম উপায়, মাই সিএনএফ অনুসরণ করুন।
একবার চেষ্টা করে দেখুন:
SET sql_mode = ''
সম্প্রদায় দ্রষ্টব্য: নীচের উত্তরগুলিতে নির্দেশিত হিসাবে, এটি আসলে বর্তমানে সক্ষম সমস্ত এসকিউএল মোডগুলি সাফ করে। এটি অগত্যা আপনি যা চান তা নাও হতে পারে।
''
= 'full group by is disabled'
? মাইএসকিউএল কিছু সুন্দর বোবা জিনিস করে তবে এটি সেখানে রয়েছে is
0 rows affected
এবং আমার ক্যোয়ারী এখনও কার্যকর হয় না:Error Code: 1055. Expression #6 of SELECT list is not in GROUP BY clause and contains nonaggregated column ...
global
নিশ্চিত হন ।
mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> exit;
sql_mode
পূর্ববর্তী মানটিতে রোলব্যাক করব। আমি এখন কি করব?
বিদ্যমানগুলি অপসারণ না করেই কেবলমাত্র একটি মোডকে স্কয়ার_মোডে যুক্ত করা:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',<mode_to_add>'));
অন্যকে অপসারণ না করে কেবল sql_mode থেকে একটি নির্দিষ্ট মোড অপসারণ:
SET sql_mode=(SELECT REPLACE(@@sql_mode,'<mode_to_remove>',''));
আপনার ক্ষেত্রে, আপনি যদি কেবল ONLY_FULL_GROUP_BY
মোডটি সরাতে চান তবে নীচের কমান্ডটি ব্যবহার করুন:
SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));
তথ্যসূত্র: http://johnemb.blogspot.com/2014/09/adding-or-removing-ind individual-sql-modes.html
@Cwisperer ধন্যবাদ। সিমফোনি অ্যাপে ডক্ট্রাইন নিয়ে আমার একই সমস্যা ছিল। আমি আমার কনফিগারেশনটিতে কেবলমাত্র বিকল্পটি যুক্ত করেছি:
doctrine:
dbal:
driver: pdo_mysql
options:
# PDO::MYSQL_ATTR_INIT_COMMAND
1002: "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"
এটি আমার পক্ষে ভাল কাজ করেছে।
SET NAMES
এই পদ্ধতিটি ব্যবহার না করে সেট করবেন না , বেশিরভাগ ক্ষেত্রে এটি ইতিমধ্যে ডায়ল্ট্রিন.ডাবাল.কমারসেট কোফনিগের মাধ্যমে সিম্ফনি সেট করার প্রয়োজন নেই: symfony.com/doc/current/references/configration/doctrine.html , এবং এটি পিডিও ডিএনএসের মাধ্যমে সঠিকভাবে করে, সেট নামগুলি এটি করার পুরানো উপায়, যা পিএইচপি সংস্করণ 5.3 এর চেয়ে বেশি ব্যবহার করা উচিত নয়
চালু:
না:
$ sudo nano /etc/mysql/conf.d/mysql.cnf
কপি এবং পেস্ট:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
ফাইলের নীচে
$ sudo service mysql restart
/etc/mysql/mysql.cnf
2 টি কনফিগারেশন ফোল্ডার !includedir /etc/mysql/conf.d/
+ দেখায় !includedir /etc/mysql/mysql.conf.d/
। একই জন্য যায় /etc/mysql/my.cnf
। সুতরাং আমি ধরে নিয়েছি যে কনফিগারেশন ফাইলগুলি আপডেটের পরে ওভাররাইড করা হয় না। আপনি এখানে আরও পড়তে পারেনhttp://dev.mysql.com/doc/mysql/en/server-system-variables.html
sql_mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
সম্ভবত এর /etc/mysql/mysql.conf.d/mysqld_mode.cnf
পরিবর্তে একটি নতুন ফাইল তৈরি করা গুরুত্বপূর্ণ
আমি লক্ষ করেছি যে @ ইয়ে ওকন ইও সমাধান মাইএসকিউএল সার্ভারটি আরম্ভ না করা ততক্ষণ কাজ করে, তারপরে ডিফল্ট সেটিংস পুনরুদ্ধার করা হয়। এখানে একটি স্থায়ী সমাধান যা আমার পক্ষে কাজ করেছে:
নির্দিষ্ট এসকিউএল মোডটি সরাতে (এই ক্ষেত্রে কেবলমাত্র_এইফএলএলল_গ্রোপ_বিওয়াই ), বর্তমান এসকিউএল মোডটি সন্ধান করুন:
SELECT @@GLOBAL.sql_mode;
ফলাফলটি অনুলিপি করুন এবং যা আপনার প্রয়োজন হবে না তা থেকে মুছে ফেলুন ( কেবলমাত্র_ফুলল_গ্রো_পি )
উদাহরণ:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
প্রতি
STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
এই ফাইলটি তৈরি এবং খুলুন:
/etc/mysql/conf.d/disable_strict_mode.cnf
এবং এতে লিখুন এবং এতে আপনার নতুন এসকিউএল মোডটি রেখে দিন:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
মাইএসকিউএল পুনরায় চালু করুন:
sudo service mysql restart
অথবা আপনি ANY_VALUE()
কেবলমাত্র প্রত্যাখ্যানকে দমন করতে ব্যবহার করতে পারেন ONLY_FULL_GROUP_BY মান প্রত্যাখ্যান, আপনি এটি সম্পর্কে এখানে আরও পড়তে পারেন
ANY_VALUE()
মাইএসকিউএল ডকুমেন্টেশন নিম্নলিখিত পদ্ধতি নির্দিষ্ট করে:
sql-mode="<modes>"
My.cnf (ইউনিক্স অপারেটিং সিস্টেম) বা my.ini (উইন্ডোজ) এর মতো একটি বিকল্প ফাইলে সেট করুন ।--sql-mode="<modes>"
বিকল্পটি ব্যবহার করুন ।* <modes>
কমা দ্বারা বিভক্ত বিভিন্ন মোডের একটি তালিকা।
এসকিউএল মোডকে স্পষ্টভাবে সাফ করতে, --sql-mode=""
কমান্ড লাইনে বা sql-mode=""
কোনও বিকল্প ফাইলে এটি একটি খালি স্ট্রিংয়ে সেট করুন।
আমি sql-mode=""
বিকল্পটি যুক্ত করেছি /etc/my.cnf
এবং এটি কার্যকর হয়েছে।
এই এসও সমাধানটি মাইএসকিউএল দ্বারা কোন মাই সিএনএফ ফাইল ব্যবহার করছে তা নির্ধারণের উপায়গুলি নিয়ে আলোচনা করে।
পরিবর্তনগুলি করার পরে মাইএসকিউএল পুনরায় চালু করতে ভুলবেন না।
SELECT @@GLOBAL.sql_mode;
আপনি যদি WAMP ব্যবহার করেন। ডাব্লুএএমএএমপি আইকনে বাম ক্লিক করুন তারপরে মাইএসকিউএল -> মাইএসকিউএল সেটিংস -> এসকিএল-মোড এবং তারপরে স্কেল-মোড-> ব্যবহারকারী মোডটি নির্বাচন করুন
আমার স্কয়ারে (ম্যাক ওএস এক্সে চলিত সংস্করণ 5.7.11) মাইএসকিএল শেল ক্লায়েন্টে আমার জন্য এই কাজটি:
SET
@@GLOBAL.sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
মাইএসকিউএল 5.6 ডকুমেন্টেশন অনুসারে, sql_mode ডিফল্ট হয়
মাইএসকিউএল 5.6.5 এ ফাঁকা স্ট্রিং
sql_mode := ''
সম্ভব বলে দাবি করেছে। আপনি একমত না কেন?
মাইএসকিউএল 5.7 এবং উবুন্টু 16.04 এ, mysql.cnf ফাইলটি সম্পাদনা করুন।
$ sudo nano /etc/mysql/conf.d/mysql.cnf
নীচের মত স্ক্যালি_মোড অন্তর্ভুক্ত করুন এবং ফাইলটি সংরক্ষণ করুন।
[mysql]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
এটি লক্ষ করুন, আমার ক্ষেত্রে, আমি মোডটি সরানো হয়েছে STRICT_TRANS_TABLES এবং কেবলমাত্র_ফুলL_GROUP_BY।
এটি করার ফলে এটি স্থায়ীভাবে মোড কনফিগারেশন সংরক্ষণ করবে। অন্যথায় যদি আপনি কেবল মাইএসকিউএল এর মাধ্যমে @@ এসকিএল_মোড আপডেট করেন তবে এটি মেশিন / পরিষেবা পুনঃসূচনাতে পুনরায় সেট হবে।
এর পরে, পরিবর্তিত কনফিগারেশনে কার্যকর পদক্ষেপ নেওয়ার জন্য, মাইএসকিএল পরিষেবাটি পুনরায় চালু করুন:
$ sudo service mysql restart
মাইএসকিএল অ্যাক্সেস করার চেষ্টা করুন:
$ mysql -u user_name -p
আপনি যদি লগইন করতে এবং মাইএসকিউএল কনসোল অ্যাক্সেস করতে সক্ষম হন তবে এটি ঠিক আছে। গ্রেট!
কিন্তু , যদি আমার মত, আপনার ত্রুটিটি মুখোমুখি "অজানা পরিবর্তনশীল sql_mode" যা নির্দেশ করে যে, sql_mode জন্য একটি বিকল্প mysqld , আপনি ফিরে, আবার যেতে সম্পাদন করা ফাইল mysql.cnf এবং পরিবর্তন থাকবে [mysql]
করার [mysqld]
। মাইএসকিউএল পরিষেবাটি পুনরায় চালু করুন এবং মাইএসকিউএল কনসোলে লগইন করার চেষ্টা করে একটি শেষ পরীক্ষা করুন। এটা এখানে!
এটিই আমি মাইএসকিএল ওয়ার্কবেঞ্চ ঠিক করতে পেরেছি:
আমি নিচের কমান্ডের সাথে বর্তমান মানটি পাওয়ার আগে
SELECT @@sql_mode
পরে আমি তালিকা থেকে ONLY_FULL_GROUP_BY কী সরিয়েছি এবং নীচের কমান্ডটি আমি আটকালাম
SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
ম্যাক ওএস মোজাভে (10.14) ওপেন টার্মিনালের জন্য
$ sudo mkdir /usr/local/mysql-5.7.24-macos10.14-x86_64/etc
$ cd /usr/local/mysql-5.7.24-macos10.14-x86_64/etc
$ sudo nano my.cnf
নিম্নলিখিত পেস্ট করুন:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
সংরক্ষণ করুন & থেকে প্রস্থান করুন সিঙ্গুরের Shortkeys: Ctrl+x
এবং y
এবংEnter
দ্রষ্টব্য: আপনারmysql-5.7.24-macos10.14-x86_64
এই কমান্ডগুলিতেআপডেট করার প্রয়োজন হতে পারে, কেবলমাত্র আপনার ভিতরে থাকা সঠিক ফোল্ডারের নামটি পরীক্ষা করুন/usr/local/
আশা করি এটি কারও সাহায্য করবে!
sql_mode
মাইএসকিউএল 5.7.9 বা তারপরে
এ থেকে কোনও মোড যুক্ত করতে বা মুছতে sql_mode
আপনি ব্যবহার করতে পারেন list_add
এবং list_drop
ফাংশন করতে পারেন ।
বর্তমান থেকে একটি মোড অপসারণ SESSION.sql_mode
করতে, আপনি নিম্নলিখিতগুলির একটি ব্যবহার করতে পারেন:
SET SESSION sql_mode = sys.list_drop(@@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY');
SET sql_mode = sys.list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');
SET @@sql_mode = sys.list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');
পরিষেবাটি আরম্ভ না হওয়া অবধি GLOBAL.sql_mode
বর্তমান রানটাইম ক্রিয়াকলাপ থেকে স্থিত থাকা থেকে এমন একটি মোড সরাতে ।
SET GLOBAL sql_mode = sys.list_drop(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY');
মাইএসকিউএল 5.7.8 বা তার আগের
যেহেতু sql_mode
মানটি একটি সিএসভি পংক্তির স্ট্রিং, আপনার এটি নিশ্চিত করতে হবে যে স্ট্রিংটিতে অবশিষ্টাংশ কমা নেই, যা ব্যবহার করে সম্পন্ন করা যেতে পারে TRIM(BOTH ',' FROM ...)
।
sql_mode
ভেরিয়েবল থেকে কোনও মোড অপসারণ করতে , কোনও অবশিষ্ট অবরুদ্ধ কমা অপসারণ হয়েছে তা নিশ্চিত করার জন্য আপনি REPLACE()
পাশাপাশি ব্যবহার করতে চান TRIM()
want
SET SESSION sql_mode = TRIM(BOTH ',' FROM REPLACE(@@SESSION.sql_mode, 'ONLY_FULL_GROUP_BY', ''));
SET GLOBAL sql_mode = TRIM(BOTH ',' FROM REPLACE(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY', ''));
চলকটিতে একটি মোড যুক্ত করতে sql_mode
, আপনি CONCAT_WS(',', ...)
বর্তমান মোডের সাথে একটি কমা যুক্ত TRIM()
হয়েছে তা নিশ্চিত করতে এবং যে কোনও অবশিষ্ট কোমা অপসারণ হয়েছে তা নিশ্চিত করতে আপনি ব্যবহার করতে চান would
SET SESSION sql_mode = TRIM(BOTH ',' FROM CONCAT_WS(',', 'ONLY_FULL_GROUP_BY', @@SESSION.sql_mode));
SET GLOBAL sql_mode = TRIM(BOTH ',' FROM CONCAT_WS(',', 'ONLY_FULL_GROUP_BY', @@GLOBAL.sql_mode));
দ্রষ্টব্য: নতুন সংযোগ স্থাপন না হওয়া অবধি ভেরিয়েবল পরিবর্তন করা চলকটিতে প্রচার
GLOBAL
করে নাSESSION
।
GLOBAL
যতক্ষণ না চলমান সেবা পুনরায় আরম্ভ করা হয় পরিবর্তনশীল জিদ করা হবে।
SESSION
পরিবর্তনশীল, বর্তমান সংযোগের জন্য জিদ করা পর্যন্ত সংযোগ বন্ধ করা হবে এবং একটি নতুন সংযোগ স্থাপন করা হয়।
GLOBAL.sql_mode
যেহেতু সংশোধক SET sql_mode = 'ONLY_FULL_GROUP_BY';
ছাড়াই কার্যকর করা হয়েছিল GLOBAL
, পরিবর্তনটি কেবলমাত্র বর্তমান SESSION
রাষ্ট্রীয় মানকেই প্রভাবিত করে , যা এর সাথে সম্পর্কিত @@sql_mode
। এটি মুছে ফেলার জন্য এবং সার্ভার পুনরায় আরম্ভের মানটিতে গ্লোবাল ডিফল্টে ফিরে যেতে , আপনি এর থেকে মানটি ব্যবহার করতে চান @@GLOBAL.sql_mode
। [সিক]
বর্তমান
SESSION
মানটি কেবল বর্তমান সংযোগের জন্য বৈধ। সার্ভারের সাথে পুনরায় সংযোগ স্থাপনের ফলে মানটি মানটিতে ফিরে আসবেGLOBAL
।
বর্তমান সেশন রাষ্ট্রের মানটিকে বর্তমান বৈশ্বিক মানে ফেরাতে, আপনি নিম্নলিখিতগুলির একটি ব্যবহার করতে পারেন:
SET SESSION sql_mode = @@GLOBAL.sql_mode;
SET @@sql_mode = @@GLOBAL.sql_mode;
SET sql_mode = @@GLOBAL.sql_mode;
SESSION.sql_mode
মান পরিবর্তন করুনONLY_FULL_GROUP_BY
SET sql_mode = 'ONLY_FULL_GROUP_BY';
SELECT @@sql_mode, @@GLOBAL.sql_mode;
+--------------------+----------------------------------------------+
| @@sql_mode | @@GLOBAL.sql_mode |
+--------------------+----------------------------------------------+
| ONLY_FULL_GROUP_BY | NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION |
+--------------------+----------------------------------------------+
প্রত্যাবর্তন SESSION.sql_mode
মান GLOBAL.sql_mode
মান
SET sql_mode = @@GLOBAL.sql_mode;
SELECT @@sql_mode, @@GLOBAL.sql_mode;
+----------------------------------------------+----------------------------------------------+
| @@sql_mode | @@GLOBAL.sql_mode |
+----------------------------------------------+----------------------------------------------+
| NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION | NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------+----------------------------------------------+
sql_mode
সার্ভার প্রারম্ভকালে এসকিউএল মোড সেট করতে ,
--sql-mode="modes"
কমান্ড লাইনের বিকল্পটি ব্যবহার করুন , অথবাsql-mode="modes"
অপশন ফাইলে যেমন মাই সিএনএফ (ইউনিক্স অপারেটিং সিস্টেম) বা মাই.inআই (উইন্ডোজ) ব্যবহার করুন। [সিক]
সমর্থিত এবং ডিফল্ট মোডগুলি নির্ধারণ করতে দয়া করে আপনার মাইএসকিউএল এর সংস্করণটি দেখুন ।
[mysqld]
sql-mode="NO_ENGINE_SUBSTITUTION" #default <= 5.7.4
sql_mode
মানযেহেতু প্রতি সংস্করণ মানগুলি মাইএসকিউএল ডকুমেন্টেশন মুছে ফেলা হয়েছে, তাই আমি আপনার রেফারেন্সের জন্য সেগুলি এখানে যুক্ত করেছি।
মাইএসকিউএল> = 8.0.11 8.0.5 - 8.0.10 এড়িয়ে গেছেন
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION
মাইএসকিউএল> = 5.7.8, <= 8.0.4
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
মাইএসকিউএল 5.7.7
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION
মাইএসকিউএল> = 5.7.5, <= 5.7.6
ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ENGINE_SUBSTITUTION
মাইএসকিউএল> = 5.6.6, <= 5.7.4
NO_ENGINE_SUBSTITUTION
মাইএসকিউএল <= 5.6.5
''
আপনি যদি মাইএসকিউএল 8.0.11 ব্যবহার করেন তবে আপনাকে স্কুয়েল-মোড থেকে 'NO_AUTO_CREATE_USER' অপসারণ করতে হবে।
ফাইল /etc/mysql/my.cnf
এবং [mysqld] শিরোনামে নিম্নলিখিত লাইন যুক্ত করুন
[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
আমি মতবাদটি ব্যবহার করছি এবং আমি আমার মতবাদ.লোকাল.এফপিতে ড্রাইভারঅপশন যুক্ত করেছি:
return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
'host' => 'localhost',
'port' => '3306',
'user' => 'myusr',
'password' => 'mypwd',
'dbname' => 'mydb',
'driverOptions' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))"
),
),
),
),
));
পিএইচপিএমইডমিনে ব্যবহারকারীর সুবিধায় SUPER সক্রিয় করা দরকার।
যাদের সাথে একটি VPS / সার্ভার চলমান করার জন্য cPanel / WHM , আপনি স্থায়ীভাবে অক্ষম করে ONLY_FULL_GROUP_BY নিম্নলিখিত কি করতে পারেন
আপনার রুট অ্যাক্সেস প্রয়োজন (কোনও ভিপিএস বা উত্সর্গীকৃত সার্ভারে)
রুট হিসাবে WHM লিখুন এবং phpMyAdmin চালান
চলকগুলিতে ক্লিক করুন, অনুসন্ধান sql_mode
করুন, 'সম্পাদনা' এ ক্লিক করুন এবং সেই পাঠ্যবাক্সের ভিতরে পুরো লাইনটি অনুলিপি করুন
যেমন এটি অনুলিপি করুন:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
এসএফটিপি - এসএসএইচ (রুট) এর মাধ্যমে আপনার সার্ভারের সাথে সংযোগ স্থাপন করুন এবং ফাইলটি ডাউনলোড করুন /etc/my.cnf
my.cnf
আপনার স্থানীয় পিসিতে একটি পাঠ্য সম্পাদক ফাইল দিয়ে খুলুন এবং এতে ( [mysqld]
বিভাগের অধীনে ) আপনি স্টেপ (২) এ অনুলিপি করেছেন এমন সম্পূর্ণ লাইনটি আটকে দিন তবে সরানONLY_FULL_GROUP_BY,
যেমন এটি পেস্ট করুন:
# disabling ONLY_FULL_GROUP_BY
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
my.cnf
ফাইলটি সংরক্ষণ করুন এবং এটিকে আবার আপলোড করুন/etc/
WHM লিখুন এবং "WHM> পুনঃসূচনা পরিষেবাদি> এসকিউএল সার্ভার (মাইএসকিউএল)" এ যান এবং পরিষেবাটি পুনঃসূচনা করুন
আমি মাইএসকিএল নিয়ে কাজ করছি এবং রুট ব্যবহারকারীর সাথে নিবন্ধীকৃত, আমার জন্য কাজ করা সমাধানটি নিম্নলিখিত:
mysql> SET SESSION sql_mode = (নির্বাচন করুন প্রতিস্থাপন (এমপিএইচএইচএল_মোড, 'কেবলমাত্র_ফুল্ল_GROUP_BY', ''));
এটি উবুন্টু 14+ তে মাইএসকিএল 5.7+ এর স্থায়ী সমাধান:
$ sudo bash -c "echo -e \"\nsql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\" >> /etc/mysql/mysql.conf.d/mysqld.cnf"
$ sudo service mysql restart
# Check if login attempt throws any errors
$ mysql -u[user] -p # replace [user] with your own user name
আপনি যদি ত্রুটি ছাড়াই লগইন করতে সক্ষম হন - আপনার এখনই সব সেট করা উচিত।
আপনি কনফিগার ফাইলটি ব্যবহার করে এটি অক্ষম করতে পারেন my.cnf
:
$ mysql --verbose --help | grep my.cnf
ম্যাকোস 10.12 তে তাই এটি usr/local/etc/my.cnf
। আপনি sql_mode
এখানে সম্পাদনা করতে পারেন :
# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Phpmyadmin ড্যাশবোর্ডের মাধ্যমে MySQL কনফিগারেশন পরিবর্তন করার জন্য আমার সমাধানটি এখানে দেওয়া হয়েছে:
"এটি sql_mode = কেবল_ সম্পূর্ণ_গ্রুপ_বাইয়ের সাথেই বেমানান" ঠিক করতে: phpmyadmin এবং গেটো হোম পৃষ্ঠা খুলুন এবং 'ভেরিয়েবল' সাবমেনু নির্বাচন করুন। স্কয়ার মোডটি খুঁজতে নীচে স্ক্রোল করুন। এসকিএল মোড সম্পাদনা করুন এবং এটি সংরক্ষণ করুন 'ONLY_FULL_GROUP_BY' এটি সংরক্ষণ করুন।
SET sql_mode = ''
?