Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Aurora Serverless MySQL 5.6 . के साथ सीमांकक का उपयोग करते समय सिंटैक्स त्रुटि

मैंने इसे समझने की कोशिश में एक दिन बिताया, इसलिए उम्मीद है कि इससे किसी को वहां मदद मिलेगी...

DELIMITER क्लाइंट की एक विशेषता है, MySQL सर्वर नहीं। आरडीएस क्वेरी संपादक एक क्लाइंट है, लेकिन यह सीमांकक को बदलने का समर्थन नहीं करता है, इसलिए आपके द्वारा प्रदान की गई स्क्रिप्ट को चलाने का प्रयास काम नहीं करेगा क्योंकि पहली बार अर्धविराम दिखाई देता है, यह व्याख्या करेगा कि कमांड के अंत के रूप में और विफल हो जाएगा एक सिंटैक्स त्रुटि।

तो, आप एक संग्रहीत कार्यविधि की तरह कुछ कैसे बनाते हैं जिसमें कई कथन और अर्धविराम हैं? आपको इसे एक .sql . के रूप में बनाना होगा फ़ाइल करें और इसे लैम्ब्डा फ़ंक्शन या सीएलआई से डेटा एपीआई का उपयोग करके भेजें।

सबसे पहले, अपनी स्क्रिप्ट को .sql . में बनाएं फ़ाइल बिना किसी DELIMITER . के आदेश या वैकल्पिक सीमांकक।

उदाहरण के लिए:function.sql

CREATE PROCEDURE simpleproc (OUT param1 INT)
BEGIN
   SELECT COUNT(*) INTO param1 FROM t;
END

फिर, इस तरह CLI का उपयोग करके स्क्रिप्ट चलाएँ:

cat function.sql | xargs -0 aws rds-data execute-statement \
    --resource-arn arn:aws:rds:eu-west-1:xxx:cluster:cluster-name \
    --secret-arn arn:aws:secretsmanager:eu-west-1:xxx:secret:secret-name-xxx \
    --database "database_name" \
    --sql

वैकल्पिक रूप से, आप एक लैम्ब्डा फ़ंक्शन बना सकते हैं जो फ़ाइल को पढ़ता है और rds_client.execute_statement() का उपयोग करता है डेटा एपीआई के माध्यम से सर्वर को स्क्रिप्ट भेजने के लिए। लेकिन फिर से, DELIMITER . का उपयोग न करें बयान। सर्वर BEGIN देखता है और END सीमांकक को बदलने की आवश्यकता के बिना लाइनों और तदनुसार कार्य करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP शब्द अनुक्रमणिका, प्रदर्शन और उचित परिणाम

  2. MySQL का उपयोग करने के तरीके पर एक व्यापक मार्गदर्शिका

  3. MySQL:SQL क्वेरी से डेटाबेस को डंप करें

  4. MySQL के IF() फ़ंक्शन के लिए मानक विधि

  5. mysql डेटाबेस को एक कंप्यूटर से दूसरे कंप्यूटर में कॉपी करना