คำถามติดแท็ก mysql

MySQL ทุกรุ่น (ไม่ใช่ Microsoft SQL Server) โปรดเพิ่มแท็กเฉพาะเวอร์ชันเช่น mysql-5.7 หากเกี่ยวข้องกับคำถาม

2
MySQL: ลบ…ใน .. ใน () เทียบกับลบ .. จาก .. เข้าร่วมและล็อคตารางเมื่อลบด้วยการเลือกย่อย
คำเตือน: โปรดแก้ตัวความรู้ของฉันเกี่ยวกับฐานข้อมูลภายใน นี่มันไป: เราเรียกใช้แอปพลิเคชั่น (ไม่ได้เขียนโดยเรา) ซึ่งมีปัญหาประสิทธิภาพการทำงานใหญ่ในงานล้างข้อมูลเป็นระยะในฐานข้อมูล แบบสอบถามมีลักษณะดังนี้: delete from VARIABLE_SUBSTITUTION where BUILDRESULTSUMMARY_ID in ( select BUILDRESULTSUMMARY_ID from BUILDRESULTSUMMARY where BUILDRESULTSUMMARY.BUILD_KEY = "BAM-1"); ตรงไปตรงมา SQL ที่อ่านง่ายและมาตรฐาน แต่น่าเสียดายที่ช้ามาก การอธิบายเคียวรีแสดงว่าไม่ได้ใช้ดัชนีที่VARIABLE_SUBSTITUTION.BUILDRESULTSUMMARY_IDมีอยู่: mysql> explain delete from VARIABLE_SUBSTITUTION where BUILDRESULTSUMMARY_ID in ( -> select BUILDRESULTSUMMARY_ID from BUILDRESULTSUMMARY -> where BUILDRESULTSUMMARY.BUILD_KEY = "BAM-1"); | id | select_type …

1
ต้องการสำรองฐานข้อมูล MySQL data_schema, performance_schema, mysql และ phpmyadmin หรือไม่?
ฉันรู้ว่าไม่จำเป็นต้องสำรองinformation_schemaฐานข้อมูล แต่เกี่ยวกับฐานข้อมูลต่อไปนี้ (นอกเหนือจากฐานข้อมูลที่ผู้ใช้กำหนด)? performance_schema mysql phpmyadmin (ดังนั้นในกรณีที่มีปัญหาและเราต้องเริ่มจากศูนย์ (ติดตั้ง MySQL ใหม่) ซึ่งฐานข้อมูลใดที่ฉันต้องวางกลับ)?

5
คำนวณค่าแถวตามค่าแถวก่อนหน้าและค่าจริง
สวัสดีทุกคนและขอบคุณสำหรับความช่วยเหลือของคุณ ฉันมีสถานการณ์ต่อไปนี้: ตารางที่เรียกว่า statement ที่มีฟิลด์id (int), stmnt_date (date), เดบิต (double), credit (double) และbalance (double) ฉันต้องการคำนวณยอดคงเหลือตามกฎเหล่านี้: ยอดคงเหลือแถวแรก ( ตามลำดับ ) = เดบิต - เครดิตและส่วนที่เหลือของแถว current row balance = สมดุลแถวก่อนหน้า + การเดบิตแถวปัจจุบัน - เครดิตแถวปัจจุบัน อย่างที่คุณเห็นในภาพด้านบนแถวไม่ได้จัดเรียงตามวันที่และนั่นคือเหตุผลที่ฉันใช้คำตามลำดับเวลาสองครั้งเพื่อเน้นความสำคัญของค่า stmnt_date ขอบคุณมากสำหรับความช่วยเหลือของคุณ.
9 mysql  row 

2
MySQL Fabric และ MySQL Cluster ต่างกันอย่างไร
ฉันยังใหม่กับโลก MySQL และทั้งสองก็สับสน พวกเขาทั้งคู่ไม่ให้ความพร้อมใช้งานสูงและการแยกชิ้นส่วนใช่หรือไม่ นอกจากนี้ WebScaleSQL เปรียบเทียบอย่างไร

1
วิธีเพิ่มมูลค่าของคอลัมน์ด้วยเครื่องหมายอัญประกาศคู่ (เพิ่มเครื่องหมายคำพูดรอบสตริง)
ฉันมีตารางที่มีคอลัมน์ที่เป็นประเภทข้อความ ในคอลัมน์เป็นอักขระตัวเลข สิ่งที่ฉันพยายามทำให้สำเร็จคือห่ออักขระเหล่านั้นด้วยเครื่องหมายคำพูดคู่ ตัวอย่าง: NAME ID QTY Apples A1 1 Oranges O1 1 Foo F1 0 ผลลัพธ์ที่ออกมา: NAME ID QTY Apples A1 "1" Oranges O1 "1" Foo F1 "0" ฉันพยายามเรียกใช้คำสั่ง SELECT ต่อไปนี้ แต่ไม่ได้ให้ผลลัพธ์ที่ฉันต้องการ บางทีคุณสามารถแนะนำฉันในทิศทางที่ถูกต้อง SELECT `qty`, CHAR('"'|| qty ||'"') FROM `myTable`; ขอบคุณ
9 mysql  concat 

2
ฉันจะสร้าง binlog-format = ROW เป็นค่าเริ่มต้นในไฟล์ /etc/my.cnf ได้อย่างไร
ฉันสามารถเรียกใช้แบบสอบถามSET GLOBAL binlog_format = 'ROW'และใช้ได้กับเซสชันนั้น ฉันจะทำให้การตั้งค่านี้ติดหลังจากหยุดและรีสตาร์ท MySQL ได้อย่างไร หมายเหตุ: ฉันอยู่ในรุ่น 5.5.19 ของ MySQL (พร้อม Moodle) และฉันเพิ่งอัพเกรดจาก MyISAM เป็น InnoDB ดังนั้นจึงต้องมีการตั้งค่าใหม่นี้ ฉันได้ลองเพิ่มคำสั่งสองคำสั่งนี้ (แยกกัน) ลงใน my.cnf: binlog-format = ROWและbinlog_format = ROWและไม่ทำงาน ฉันหยุดและเริ่ม MySQL ใหม่ทุกครั้งที่ฉันเปลี่ยน my.cnf ข้อผิดพลาดที่ฉันได้รับหากไม่มีการตั้งค่านี้เป็นข้อความแสดงข้อผิดพลาดสามานย์: ข้อมูลการดีบัก: ไม่สามารถดำเนินการคำสั่ง: เป็นไปไม่ได้ที่จะเขียนลงในบันทึกไบนารีเนื่องจาก BINLOG_FORMAT = STATEMENT และอย่างน้อยหนึ่งตารางใช้เอ็นจิ้นการจัดเก็บที่ จำกัด เฉพาะการบันทึกตามแถว InnoDB ถูก จำกัด ไว้ที่การบันทึกแถวเมื่อระดับการแยกธุรกรรมถูกอ่านยอมรับหรืออ่านไม่ได้รับการยอมรับ
9 mysql  innodb  my.cnf 

1
คุณจะปิดการใช้งานเข้าสู่ระบบที่ไม่ระบุชื่อได้อย่างไร
ตามเอกสาร MySQLคุณสามารถทำให้เซิร์ฟเวอร์ MySQL แข็งขึ้นได้โดยการเพิ่มรหัสผ่านหรือลบบัญชีที่ไม่ระบุชื่อ หากคุณต้องการป้องกันไม่ให้ลูกค้าเชื่อมต่อในฐานะผู้ใช้ที่ไม่ระบุชื่อโดยไม่มีรหัสผ่านคุณควรกำหนดรหัสผ่านให้กับบัญชีที่ไม่ระบุชื่อแต่ละบัญชีหรือลบบัญชีออก ก่อนที่จะทำให้แข็งตารางผู้ใช้ของฉันมีลักษณะเช่นนี้ mysql> select user,host,password from mysql.user; +------------------+-----------+-------------------------------------------+ | user | host | password | +------------------+-----------+-------------------------------------------+ | root | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX | | root | gitlab | | | root | 127.0.0.1 | | | root | ::1 | | | | localhost | | …
9 mysql  security 

4
ข้อผิดพลาด MYSQL 2049 (HY000): การเชื่อมต่อที่ใช้โพรโทคอลการรับรองความถูกต้องเก่า (ก่อน 4.1.1) ที่ใช้ (ตัวเลือกไคลเอนต์ 'เปิดใช้งาน' secure_auth ')
เมื่อฉันพยายามกู้คืนดัมพ์ฐานข้อมูลทั้งหมดซึ่งอยู่ในเวอร์ชัน 5.0 ถึง 5.6 เวอร์ชันมันได้รับการกู้คืนและหลังจากนั้นเมื่อฉันพยายามเชื่อมต่อใหม่ฉันได้รับข้อผิดพลาดต่อไปนี้ ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled).. ฉันได้ลองเพิ่มบรรทัดต่อไปนี้ใน My.ini และเริ่มบริการใหม่ แต่ปัญหายังคงอยู่จนถึง skip-grant-tables ลิงก์ต่อไปนี้ระบุว่าเป็นข้อบกพร่องใน MYSQL https://github.com/santisaez/powerstack/blob/master/packages/mysql/mysql-powerstack-secure_auth.patch ใครบ้างมีการแก้ไขสำหรับวิธีนี้

2
การจำลองแบบ MySQL: 'รายการซ้ำสำหรับคีย์หลัก'
คุณกรุณาช่วยฉันเข้าใจว่าทำไมฉันถึงได้รับ 'รายการซ้ำสำหรับคีย์หลัก' บนเซิร์ฟเวอร์ทาสหลังจากทำการซิงค์ใหม่ทั้งหมด โดยทั่วไป 'mysqldump' ทำงานเกือบทั้งคืนแล้วกระบวนการกู้คืนใช้เวลาสองสามชั่วโมงดังนั้นเมื่อฉันเริ่มใช้งานทาสมันคือ ~ 63874 วินาทีที่อยู่เบื้องหลังเจ้านาย เซิร์ฟเวอร์ทาสเป็นแบบอ่านอย่างเดียว (read_only) และไม่มีการเขียนใด ๆ ระหว่างกระบวนการซิงค์ใหม่ดังนั้นฉันจึงไม่เข้าใจว่าเพราะเหตุใดจึงมีคีย์ซ้ำ รูปแบบบันทึกไบนารีตั้งค่าเป็น MIXED บนต้นแบบ คำสั่งที่ใช้ในการสำรองฐานข้อมูล: mysqldump --opt --single-transaction -Q --master-data=2 db | bzip2 -cz > db.sql.bz2 Slave จะจำลองฐานข้อมูลเดียวเท่านั้นจากต้นแบบ (db -> db_backup) ด้วยตัวเลือกต่อไปนี้: replicate-wild-do-table = db_backup.% replicate-rewrite-db = db->db_backup

2
การสืบค้นแต่ละรายการรันใน 10ms โดย UNION ALL จะใช้เวลา 290ms + (7.7M บันทึก MySQL DB) วิธีเพิ่มประสิทธิภาพ
ฉันมีตารางที่จัดเก็บการนัดหมายที่มีให้สำหรับครูช่วยให้สามารถแทรกได้สองชนิด: ตามชั่วโมง : มีอิสระทั้งหมดในการเพิ่มช่องไม่ จำกัด ต่อวันต่อครู (ตราบใดที่ช่องไม่ทับซ้อนกัน): ในวันที่ 15 / เม.ย. อาจารย์อาจมีช่องเวลา 10:00, 11:00, 12:00 และ 16:00 . บุคคลจะได้รับหลังจากเลือกเวลา / ช่องของครูที่เฉพาะเจาะจง ช่วงเวลา / ช่วงเวลา : วันที่ 15 / เม.ย. ครูคนอื่นอาจทำงานได้ตั้งแต่ 10:00 น. ถึง 12:00 น. และจากเวลา 14:00 น. ถึง 18:00 น. บุคคลที่มาถึงตามคำสั่งของการมาถึงดังนั้นหากครูทำงานตั้งแต่เวลา 10:00 น. ถึง 12:00 น. ทุกคนที่มาถึงในช่วงเวลานี้จะเข้าร่วมตามลำดับของการมาถึง (คิวท้องถิ่น) เนื่องจากฉันต้องส่งคืนอาจารย์ที่มีอยู่ทั้งหมดในการค้นหาฉันจึงต้องการบันทึกช่องทั้งหมดในตารางเดียวกันตามลำดับของช่วงการมาถึง …
9 mysql 

2
การเพิ่มผู้ใช้ไปยัง MySQL ด้วย 'name' @ '%' ล้มเหลวด้วย ERROR 1396
ฉันแค่พยายามเพิ่มผู้ใช้ใหม่ไปยัง MySQL โดยใช้ CREATE USER 'name'@'%' IDENTIFIED BY '...' อย่างไรก็ตามมันล้มเหลวด้วยข้อผิดพลาดต่อไปนี้: ERROR 1396 (HY000): Operation CREATE USER failed for 'name'@'%' การเพิ่มผู้ใช้สำหรับ localhost นั้นทำได้ดี: CREATE USER 'name'@'localhost' IDENTIFIED BY '...' ฉันไม่มีเงื่อนงำสิ่งที่อาจเป็นปัญหาได้ ฉันจะขอบคุณสำหรับความคิดใด ๆ (ฉันใช้mysql Ver 14.14 Distrib 5.1.66อยู่)

1
การถ่ายโอนข้อมูลของตาราง mysql ในการนำเข้าแทนที่ระเบียนที่มีอยู่
ฉันถ่ายโอนข้อมูลโดยใช้ mysqldump .. mysqldump -u... -p... mydb t1 > mydb_table.sql จากนั้นฉันก็นำเข้าดัมพ์ในฐานข้อมูลอื่นที่มีตารางเดียวกัน แต่บันทึกต่างกัน .. mysql -u...-p... mydb < mydb_tables.sql การอิมพอร์ต db มีเร็กคอร์ดจาก primary_key 1 ถึง 1,000 และการเอ็กซ์พอร์ต db มี 5,000 ถึง 10,000 .. แต่เมื่อนำเข้าระเบียนที่มีอยู่เช่น 1 ถึง 1,000 ถูกลบ .. วิธี ?? ทำไม?? ถ้ามันเป็นพฤติกรรมเริ่มต้นตัวเลือกอะไรที่ฉันสามารถให้กับการถ่ายโอนข้อมูลเพื่อไม่ให้มันเกิดขึ้นในครั้งต่อไป ..

2
ล็อกไบนารีของ MySQL - ข้ามตาราง
มีวิธีข้ามตารางเฉพาะในบันทึกไบนารีหรือไม่ ฉันได้รับการกำหนดค่าไบนารีบันทึกเป็นกลยุทธ์การสำรองข้อมูลเพิ่มเติมของฉันระหว่างการสำรองข้อมูลทุกคืน แต่เรามีตารางอ้างอิงขนาดใหญ่หนึ่งตารางที่เราจะอัปเดตทุกคืนจากกระบวนการแบทช์ (ตาราง 70GB) mysqlimportตารางนี้เป็นแบบอ่านอย่างเดียวและก็มีการปรับปรุงใช้ยามค่ำคืน ในระหว่างกระบวนการอัปเดตสำหรับตารางการอ้างอิงนี้เท่านั้นไฟล์บันทึกแบบไบนารีจะทำให้เกิดความล่าช้าค่อนข้างร้ายแรง (โดยเฉพาะเมื่อฉันทำการอัปเดตแบบเต็ม 70GB) มันต้องทำ 70GB สองครั้งโดยทั่วไป yuck ตารางอ้างอิงกำลังใช้ MyISAM (ฉัน chocked InnoDB พยายามโหลดดังนั้นลอง MyISAM)
9 mysql  logs  binlog 

2
ใช้ฐานข้อมูล MySQL แต่ละออฟไลน์
MySQL ไม่มีคำสั่ง SQL หรือกลไกภายในสำหรับ ทำให้ฐานข้อมูลส่วนบุคคลไม่พร้อมใช้งาน / ออฟไลน์ ย้ายฐานข้อมูลส่วนบุคคล ในกรณีนี้คุณจะใช้ฐานข้อมูลแบบออฟไลน์ได้อย่างไร

1
MySQL INNODB เกิดความเสียหายหลังจากเซิร์ฟเวอร์ขัดข้องระหว่างคำสั่ง truncate
เซิร์ฟเวอร์ของฉันทำงานล้มเหลววันนี้ฉันคิดว่าเนื่องจากคำสั่งตัดทอนตารางพร้อมกันบนหนึ่งในตาราง INNODB ของเรา เซิร์ฟเวอร์สามารถเริ่มต้นใหม่ได้ แต่หลังจากเริ่มทำงานทุกครั้งที่ฉันพยายามออกคำสั่ง SQL ฉันได้รับข้อผิดพลาดต่อไปนี้: ERROR 2006 (HY000): MySQL server has gone away นี่คือสิ่งที่เกิดขึ้นในบันทึก: 121206 01:11:12 mysqld restarted 121206 1:11:13 InnoDB: Started; log sequence number 275 559321759 InnoDB: !!! innodb_force_recovery is set to 1 !!! 121206 1:11:13 [Note] /usr/libexec/mysqld: ready for connections. Version: '5.0.95-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.