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

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

2
ORDER BY FIELD () ใน MySQL ทำงานอย่างไรภายใน
ฉันเข้าใจว่าORDER BYประโยคทำงานอย่างไรและFIELD()ฟังก์ชั่นทำงานอย่างไร สิ่งที่ฉันต้องการเข้าใจคือการที่ทั้งคู่ทำงานร่วมกันเพื่อเรียงลำดับ มีการดึงแถวมาอย่างไรและเรียงลำดับอย่างไร +----+---------+ | id | name | +----+---------+ | 1 | stan | | 2 | kyle | | 3 | kenny | | 4 | cartman | +----+---------+ SELECT * FROM mytable WHERE id IN (3,2,1,4) ORDER BY FIELD(id,3,2,1,4) แบบสอบถามข้างต้นจะส่งผลให้ +----+---------+ | id | name | …
37 mysql  order-by  fields 

7
EXISTS (SELECT 1 …) เทียบกับ EXISTS (SELECT * …) อย่างใดอย่างหนึ่งหรือไม่
เมื่อใดก็ตามที่ฉันต้องการตรวจสอบการมีอยู่ของแถวในตารางฉันมักจะเขียนเงื่อนไขเช่น: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT * -- This is what I normally write FROM another_table WHERE another_table.b = a_table.b ) คนอื่นเขียนเหมือน: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT 1 --- This nice '1' is what I have seen other people use FROM another_table …

3
ข้อผิดพลาดในการเชื่อมต่อ MySQL 5.1.66 SSL ข้อผิดพลาด 2026 (HY000)
UPDATE2 ใช้ WireShark ฉันพบสตริงปัญหา (ฉันหวังว่าฉันได้): 28 | 9.582638 | 192.168.18.128 | 192.168.18.129 | MySQL Response Error 1043 และข้อผิดพลาดคือ (ตามเอกสาร ): Error: 1043 SQLSTATE: 08S01 (ER_HANDSHAKE_ERROR) Message: Bad handshake นี่คือภาพหน้าจอของ WireShark ในสองกรณี: การเชื่อมต่อจาก Windows 8 (สำเร็จ): การเชื่อมต่อจาก CentOS (ล้มเหลว): ทำไมสิ่งนี้ถึงเกิดขึ้น UPDATE สิ่งหนึ่งที่น่าสนใจ: ฉันได้เชื่อมต่อกับ Master DB โดยใช้ Windows 8 ได้สำเร็จ(192.168.18.1)โดยการแก้ไขการตั้งค่า sslus บน …
37 mysql  replication  ssl 

6
รหัสข้อผิดพลาด 1117 มีจำนวนคอลัมน์มากเกินไป MySQL จำกัด คอลัมน์บนโต๊ะ
ฉันมีตารางที่มี 1,699 คอลัมน์และเมื่อฉันพยายามแทรกคอลัมน์อื่น ๆ ที่ฉันได้รับ รหัสข้อผิดพลาด: 1117 มีคอลัมน์มากเกินไป ในตารางนี้ฉันมีเพียง 1,000 แถว สำหรับฉันสิ่งที่สำคัญที่สุดคือจำนวนคอลัมน์ มีข้อ จำกัด ใด ๆ บนโต๊ะหรือไม่? ฉันต้องการสร้างคอลัมน์ 2,000 คอลัมน์ เป็นไปได้ไหม
37 mysql  table 

7
เป็นไปได้หรือไม่ที่จะ mysqldump ชุดย่อยของฐานข้อมูลที่จำเป็นในการสร้างแบบสอบถาม?
พื้นหลัง ฉันต้องการให้ส่วนย่อยของฐานข้อมูลของฉันที่จำเป็นในการสร้างselectแบบสอบถาม เป้าหมายของฉันคือการทำให้เวิร์กโฟลว์การคำนวณของฉันทำซ้ำได้ (เช่นในการวิจัยที่ทำซ้ำได้ ) คำถาม มีวิธีที่ฉันสามารถรวมคำสั่ง select นี้ลงในสคริปต์ที่ทิ้งข้อมูลการสืบค้นลงในฐานข้อมูลใหม่หรือไม่เช่นนั้นฐานข้อมูลสามารถติดตั้งบนเซิร์ฟเวอร์ mysql ใหม่ได้และคำสั่งจะทำงานกับฐานข้อมูลใหม่ ฐานข้อมูลใหม่ไม่ควรมีเร็กคอร์ดนอกเหนือจากที่ใช้ในเคียวรี อัปเดต: เพื่อความกระจ่างฉันไม่สนใจ csv dump ของผลลัพธ์การสืบค้น สิ่งที่ฉันต้องทำคือการถ่ายโอนข้อมูลชุดย่อยฐานข้อมูลเพื่อให้สามารถติดตั้งบนเครื่องอื่นและจากนั้นแบบสอบถามสามารถทำซ้ำได้ (และแก้ไขได้ด้วยชุดข้อมูลเดียวกัน) ตัวอย่าง ตัวอย่างเช่นการวิเคราะห์ของฉันอาจเคียวรีชุดย่อยของข้อมูลที่ต้องการบันทึกจากหลาย ๆ ตาราง (ในตัวอย่างนี้ 3) ตาราง: select table1.id, table1.level, table2.name, table2.level from table1 join table2 on table1.id = table2.table1_id join table3 on table3.id = table2.table3_id where table3.name in ('fee', 'fi', …

2
ฟังก์ชัน LAST_INSERT_ID () ของ MySql รับประกันว่าถูกต้องหรือไม่
เมื่อฉันทำแถวเดียวINSERTไปยังตารางที่มีAUTO_INCREMENTคอลัมน์ฉันต้องการใช้LAST_INSERT_ID()ฟังก์ชันเพื่อส่งกลับAUTO_INCREMENTค่า ed ' ใหม่ที่เก็บไว้สำหรับแถวนั้น Microsoft SQL Server และผู้ดูแลระบบหลายคนนั้นไม่ต้องสงสัยเลยว่าทราบถึงหน้าที่การใช้งานที่เทียบเท่าใน SQL Server ( SCOPE_IDENTITYและ@@IDENTITY) ที่ไม่เคยมีปัญหามาก่อน ฉันรู้สถานะของเอกสาร MySQL: ID ที่ถูกสร้างขึ้นจะถูกเก็บไว้ในเซิร์ฟเวอร์ในแต่ละการเชื่อมต่อพื้นฐาน ซึ่งหมายความว่าค่าที่ส่งคืนโดยฟังก์ชันไปยังไคลเอนต์ที่กำหนดเป็นAUTO_INCREMENTค่าแรกที่สร้างขึ้นสำหรับคำสั่งล่าสุดที่มีผลต่อAUTO_INCREMENTคอลัมน์โดยไคลเอ็นต์นั้น ค่านี้ไม่สามารถรับผลกระทบจากไคลเอนต์อื่นแม้ว่าพวกเขาสร้างAUTO_INCREMENTค่าของตนเอง พฤติกรรมนี้ทำให้มั่นใจได้ว่าลูกค้าแต่ละคนสามารถดึงข้อมูล ID ของตนเองได้โดยไม่ต้องกังวลกับกิจกรรมของลูกค้ารายอื่นและไม่จำเป็นต้องล็อคหรือทำธุรกรรม (ที่มา) และแม้กระทั่งไปไกลถึงจะบอกว่า: การใช้LAST_INSERT_ID()และAUTO_INCREMENTคอลัมน์พร้อมกันจากไคลเอนต์หลายคนถูกต้องสมบูรณ์ (ที่มา) มีความเสี่ยงหรือสถานการณ์ที่ทราบที่อาจทำให้LAST_INSERT_ID()ไม่คืนค่าที่ถูกต้องหรือไม่? ฉันใช้ MySQL 5.5 บน CentOS 5.5 x64 และ Fedora 16 x64 และเอ็นจิ้น InnoDB

1
MySQL: ทำไมจึงมีรายการ "ทดสอบ" ใน mysql.db
เมื่อเร็ว ๆ นี้ผมโพสต์คำตอบสำหรับคำถามเกี่ยวกับ mysql.db จากนั้นฉันต้องคิดว่าฉันควรถามคำถามนี้กับทุกคน: ฉันสังเกตเห็นมานานหลายปีแล้วว่าเมื่อติดตั้ง MySQL 5.0+ mysql.dbจะมีสองรายการที่อนุญาตให้เข้าถึงฐานข้อมูลทดสอบโดยผู้ใช้ที่ไม่ระบุชื่อ คุณสามารถดูได้โดยเรียกใช้แบบสอบถามนี้: mysql> select * from mysql.db where SUBSTR(db,1,4) = 'test'\G *************************** 1. row *************************** Host: % Db: test User: Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Grant_priv: N References_priv: Y Index_priv: Y Alter_priv: Y Create_tmp_table_priv: Y …
36 mysql  security 

5
วิธีเลือกจากผลลัพธ์สถานะแสดงตาราง
ฉันต้องการ จำกัด แถวและคอลัมน์ที่กลับมาจาก SHOW TABLE STATUS คำสั่งใน MySQL 5.1 มีวิธีรับข้อมูลเดียวกันนี้ผ่านSELECTคำสั่งเพื่อให้ฉันสามารถจัดการผลลัพธ์ในลักษณะปกติได้หรือไม่
36 mysql  select 

10
เรียกคืนตารางจากไฟล์. frm และ. ibd หรือไม่
ก่อนหน้านี้ฉันได้บันทึกสำเนาของไดเรกทอรี / var / lib / mysql / ddms ("ddms" เป็นชื่อสคีมา) ตอนนี้ฉันติดตั้ง MySQL ใหม่บน Ubuntu 10.04.3 LTS ที่เพิ่งติดตั้งใหม่โดยใช้งานapt-get install mysql-serverฉันเชื่อว่าเวอร์ชัน 5.1 ได้รับการติดตั้งแล้ว หลังจากที่ฉันคัดลอกไดเรกทอรี ddms ภายใต้ / var / lib / mysql บางส่วนของตารางทำงานได้ดีเหล่านี้เป็นตารางที่มีชุดของไฟล์สามไฟล์ที่เกี่ยวข้อง: ไฟล์. frm, ไฟล์. MYM และไฟล์. MYI อย่างไรก็ตามมีสองตารางที่มีชุดไฟล์ต่างกัน: ไฟล์. frm และไฟล์. ibd สองตารางนี้ไม่แสดงในรายการตารางใน phpMyAdmin เมื่อฉันดูบันทึกข้อผิดพลาดจะมีข้อความแจ้งว่า: [ERROR] Cannot find or …
36 mysql  innodb 

4
ฉันจะเปลี่ยน DEFINER ของ VIEW ใน Mysql ได้อย่างไร
เมื่อฉันเรียกใช้ mysqldump ฉันได้รับข้อผิดพลาด: mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES เรื่องนี้สมเหตุสมผลเพราะfoobarเป็นเครื่องจักรที่ไม่มีอยู่จริง ฉันจะเปลี่ยนนิยามของตารางทั้งหมดเป็น 'root' @ 'localhost' ได้อย่างไร

4
ทำไม MySQL ไม่มีแฮชดัชนีใน MyISAM หรือ InnoDB
ฉันมีแอพพลิเคชั่นที่จะเลือกใช้ความเท่าเทียมกันเท่านั้นและฉันคิดว่าฉันควรใช้ดัชนีแฮชเหนือดัชนี btree MyISAM หรือ InnoDB ไม่รองรับดัชนีแฮชของฉัน เกิดอะไรขึ้นกับสิ่งนั้น
35 mysql  index  innodb  myisam 

6
ปิดใช้งานการบันทึก MySQL แบบไบนารีด้วยตัวแปร log_bin
ไฟล์เริ่มต้น MySQL config /etc/mysql/my.cnf ที่ติดตั้งโดยแพ็คเกจ debian บางตัวที่ใช้ APT มักจะตั้งค่าตัวแปร log_bin ดังนั้น binlog จึงเปิดใช้งาน: log_bin = /var/log/mysql/mysql-bin.log เมื่อฉันต้องการปิดการใช้งานการบันทึกแบบไบนารีในการติดตั้งเช่นนั้นให้ใส่เครื่องหมายบรรทัดใน my.cnf แต่แน่นอนว่ามีวิธีการปิดการใช้งานการบันทึกแบบไบนารีโดยการตั้งค่าอย่างละเอียด log_bin เป็น OFF ในลักษณะเดเบียนฉันหมายถึง ไฟล์รวมเช่น /etc/mysql/conf.d/myCustomFile.cnf ดังนั้น my.cnf เริ่มต้นจะไม่เปลี่ยนแปลงและสามารถอัปเดตได้ง่ายโดย apt หากจำเป็น ฉันลอง "log_bin = 0", "log_bin = ปิด" หรือ "log_bin =" แต่ไม่มีใครทำงาน ...
35 mysql  logs  binlog  debian 

4
MySQL ตั้งค่าเวลา UTC เป็นเวลาเริ่มต้น
ฉันจะตั้งค่าคอลัมน์เวลาประทับที่ค่าเริ่มต้นคือเวลา UTC ปัจจุบันได้อย่างไร MySQL ใช้UTC_TIMESTAMP()ฟังก์ชั่นสำหรับการประทับเวลา UTC: mysql> SELECT UTC_TIMESTAMP(); +---------------------+ | UTC_TIMESTAMP() | +---------------------+ | 2012-07-01 11:36:35 | +---------------------+ 1 row in set (0.00 sec) ดังนั้นฉันได้ลอง: CREATE TABLE `blah` ( `creation_time` TIMESTAMP DEFAULT UTC_TIMESTAMP, ... และรูปแบบอื่น ๆ เช่นUTC_TIMESTAMP()แต่ไม่ประสบความสำเร็จ

2
เลือกตำแหน่งของคอลัมน์สองชุด
นี่อาจเป็นคำถามงี่เง่าและความสงสัยของฉันคือฉันไม่สามารถทำได้ แต่มีโครงสร้างใน SQL ที่จะให้ฉันทำสิ่งต่อไปนี้: SELECT whatever WHERE col1,col2 IN ((val1, val2), (val1, val2), ...) ฉันต้องการเลือกข้อมูลที่มีสองคอลัมน์อยู่ในชุดของคู่ ฉันต้องการหลีกเลี่ยงการใช้แบบสอบถามย่อยถ้าเป็นไปได้
35 mysql  where 

2
เรียงตามคอลัมน์ควรมีดัชนีหรือไม่
ฉันได้เพิ่มดัชนีในตารางซึ่งใช้สำหรับผลการค้นหา ฉันกำลังแสดงผลลัพธ์ตามลำดับ ASC หรือ DESC ดังนั้นคอลัมน์นั้นควรมีดัชนีหรือไม่? ฉันมีอีก 2 ดัชนีในตารางนั้น ประสิทธิภาพจะมีผลต่อการสร้างดัชนีหรือไม่สร้างดัชนีในคอลัมน์นั้น

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