Saya menghasilkan tabel dari kelas di .NET dan satu masalah adalah kelas mungkin memiliki nama bidang key
yang merupakan kata kunci MySQL yang dipesan. Bagaimana cara menghindarinya dalam membuat tabel pernyataan? (Catatan: Masalah lain di bawah ini adalah teks harus berukuran tetap untuk diindeks / unik)
create table if not exists misc_info (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
key TEXT UNIQUE NOT NULL,
value TEXT NOT NULL)ENGINE=INNODB;
Anda harus menggunakan karakter centang kembali (`) misalnya:
sumber
Jika Anda tertarik pada portabilitas antara berbagai server SQL, Anda harus menggunakan kueri SQL ANSI. String melarikan diri dalam ANSI SQL dilakukan dengan menggunakan tanda kutip ganda ("). Sayangnya, metode melarikan diri ini tidak portabel untuk MySQL, kecuali jika diatur dalam mode kompatibilitas ANSI.
Secara pribadi, saya selalu memulai server MySQL saya dengan argumen --sql-mode = 'ANSI' karena ini memungkinkan kedua metode untuk melarikan diri. Jika Anda menulis kueri yang akan dieksekusi di server MySQL yang tidak disetel / dikendalikan oleh Anda, berikut ini yang dapat Anda lakukan:
Lampirkan dalam permintaan khusus MySQL berikut:
Dengan cara ini, hanya kueri khusus MySQL yang ada di awal dan di akhir skrip .sql Anda. Jika Anda ingin mengirim mereka untuk server yang berbeda, cukup hapus 3 pertanyaan ini dan Anda siap. Bahkan lebih nyaman Anda dapat membuat skrip bernama: script_mysql.sql yang akan berisi permintaan pengaturan mode di atas, sumber skrip script_ansi.sql dan reset mode.
sumber