Rumah  >  Artikel  >  pangkalan data  >  Mengapa Penciptaan Acara MySQL Saya Gagal dengan 'Anda mempunyai ralat dalam sintaks SQL anda'?

Mengapa Penciptaan Acara MySQL Saya Gagal dengan 'Anda mempunyai ralat dalam sintaks SQL anda'?

Patricia Arquette
Patricia Arquetteasal
2024-11-09 22:47:02727semak imbas

Why Is My MySQL Event Creation Failing with

Menyelesaikan Masalah Ralat Acara MySQL Menggunakan PHP

Ralat Asal:

Apabila cuba mencipta acara MySQL menggunakan skrip PHP , ralat berlaku:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DELIMITER' at line 1 

Penyelesaian:

Mesej ralat menunjukkan bahawa sintaks yang digunakan untuk mencipta acara adalah tidak betul. Sintaks yang betul untuk mencipta acara ialah:

CREATE EVENT event_name
ON SCHEDULE [EVERY | AT] schedule
[ON COMPLETION [PRESERVE | NOT PRESERVE]]
DO
  statement(s);

Dalam ralat asal, pernyataan "DELIMITER" telah digunakan secara salah. Sintaks yang betul ialah:

CREATE EVENT myevent21222
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 MINUTE
DO
  BEGIN
    UPDATE `team` SET `reg` = '0' WHERE `id` = '1';
  END

Alternatif untuk Menukar Data Pangkalan Data Selepas 5 Minit:

Jika menggunakan acara untuk menukar data pangkalan data bukan pilihan, ada adalah cara lain untuk mencapai fungsi ini:

  • Cron job: Cipta tugas cron yang akan menjalankan pernyataan SQL yang diperlukan setiap 5 minit.
  • Perkhidmatan latar belakang: Bangunkan perkhidmatan latar belakang yang akan bertanggungjawab untuk memantau pangkalan data dan melaksanakan kemas kini yang diperlukan apabila diperlukan.
  • Pencetus: Sediakan pencetus pada jadual yang akan melaksanakan pernyataan SQL yang diperlukan apabila syarat yang ditentukan dipenuhi (cth., 5 minit selepas tindakan pengguna).

Pengaktifan Pengendali Acara:

Untuk memastikan acara dilaksanakan, pengendali acara mesti dihidupkan menggunakan pernyataan berikut:

SET GLOBAL event_scheduler = ON;

Anda boleh mengesahkan bahawa pengendali acara didayakan dengan menyemak nilai Pembolehubah 'event_scheduler':

SHOW VARIABLES WHERE VARIABLE_NAME='event_scheduler';

Nota Tambahan:

  • Klausa ON COMPLETION menyatakan perkara yang perlu berlaku selepas acara selesai dilaksanakan. Pilihan PRESERVE bermakna acara akan terus wujud selepas pelaksanaannya, manakala pilihan NOT PRESERVE bermakna acara akan dipadamkan sebaik sahaja ia selesai dilaksanakan.
  • Pernyataan ALTER EVENT boleh digunakan untuk melumpuhkan atau mendayakan satu acara.

Atas ialah kandungan terperinci Mengapa Penciptaan Acara MySQL Saya Gagal dengan 'Anda mempunyai ralat dalam sintaks SQL anda'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn