MySQL dan MariaDB
Selekta terhubung ke MySQL dan MariaDB dengan satu driver native bawaan, di port 3306 secara default, dan mempertahankan sql_mode serta time zone milik server supaya query berperilaku sama seperti di server. Satu koneksi bisa menjelajah semua database yang bisa dilihat user tersebut.
Terhubung
Pilih MySQL / MariaDB di daftar engine, atau tempel URL mysql:// atau mariadb://. Isi Host, Port (3306), User dan Password. Database boleh dikosongkan kalau kamu tidak butuh database default.
mysql://[email protected]:3306/billing?ssl-mode=VERIFY_IDENTITY
- Autentikasi: user dan password, termasuk akun yang memakai
caching_sha2_password. Untuk autentikasi sertifikat, tambahkan Client certificate dan Client key di tab SSL. - SSL: DISABLED, PREFERRED, REQUIRED, VERIFY_CA dan VERIFY_IDENTITY. Host remote default ke REQUIRED,
localhostke PREFERRED. Lihat Tunnel SSH dan TLS. - Deteksi server: banner tes menampilkan "MySQL 8.0.39" atau "MariaDB 11.4.2", dibaca dari string versi server.
Kalau server menolak password, cek juga bagian host dari akunnya: akun MySQL terikat pada alamat asal koneksimu.
Navigator
Navigator menampilkan semua database yang bisa dilihat user, kecuali mysql, information_schema, performance_schema dan sys. Setiap database punya tiga folder: tables, views dan functions. Tabel membuka kolom, index, foreign key dan trigger.
Jumlah baris di samping tabel berasal dari information_schema dan merupakan estimasi. Selekta meminta angka terbaru dari MySQL 8, bukan angka yang di-cache.
Perilaku session
Selekta tidak mengubah cara server kamu menafsirkan SQL:
- sql_mode: setiap session memakai
sql_modeglobal milik server. Misalnya, apakah||berarti OR atau penggabungan string, mengikuti server kamu. - Session time zone (tab Advanced): Server default mempertahankan time zone server. UTC memasang
+00:00. This Mac's zone memasang offset UTC Mac kamu saat ini, bukan nama zona, jadi session yang tetap terbuka melewati pergantian daylight saving tetap memakai offset lama. - Read-only: setiap session menjalankan
SET SESSION TRANSACTION READ ONLY, dan Selekta memblokir perintah yang menulis sebelum dikirim. - Cancel (⌘.) mengirim
KILL QUERYuntuk perintah yang sedang berjalan.
Script dan transaksi
Run script (⌥X) memecah script menjadi beberapa perintah. Baris DELIMITER bekerja seperti di tool command line mysql: baris itu mengganti delimiter dan tidak pernah dikirim ke server.
DELIMITER //
CREATE PROCEDURE archive_orders()
BEGIN
INSERT INTO orders_archive SELECT * FROM orders WHERE status = 'closed';
DELETE FROM orders WHERE status = 'closed';
END //
DELIMITER ;
Body CREATE PROCEDURE, FUNCTION, TRIGGER dan EVENT yang ditulis di antara BEGIN dan END juga tetap menjadi satu perintah tanpa baris DELIMITER.
Dalam mode manual commit, MySQL meng-commit transaksi yang terbuka dengan sendirinya sebelum perintah seperti CREATE, ALTER, DROP atau BEGIN. Kalau masih ada perintah yang tertunda, Selekta berhenti sebelum perintah seperti itu dan memintamu commit atau rollback dulu, jadi tidak ada yang ter-commit diam-diam. Lihat Keamanan production.
Explain dan data spasial
Explain (⌘E) menjalankan EXPLAIN FORMAT=JSON dan menggambar plan sebagai pohon. Explain Analyze (⌥⌘E) menjalankan EXPLAIN ANALYZE, yang benar-benar mengeksekusi perintah dan melaporkan waktu sebenarnya, jadi konfirmasi untuk perintah destruktif tetap berlaku. Lihat Explain plan.
Di koneksi Production dan Staging, DELETE atau UPDATE yang memakai WHERE lebih dulu mendapat estimasi jumlah baris dari EXPLAIN, yang menentukan apakah perintah itu perlu dikonfirmasi.
Kolom spasial (GEOMETRY, POINT, POLYGON dan lainnya) dibaca beserta SRID-nya dan bisa ditampilkan di panel peta.
Backup dan batasan
Backup… dan Restore… memakai mysqldump dan mysql, atau mariadb-dump dan mariadb, yang ada di Mac kamu. Tool ini tidak ikut dalam aplikasi. Lihat Backup dan restore.
Belum didukung saat ini:
- Terhubung lewat file Unix socket. Gunakan
127.0.0.1dan port TCP sebagai gantinya. - Stored procedure di navigator. Procedure tetap bisa dijalankan dengan
CALL, tetapi yang ditampilkan hanya function.