Mysql

2009-05-29 22 views
12

adında özel karakterler içeren bir veritabanı oluşturun. İçinde özel karakterlerin bulunduğu bir veritabanı oluşturmak istiyorum. örneğin, (., -, _, @, #, $,%, &, *)Mysql

Bu konuda herhangi bir çıktı sağlayan var mı?

cevap

26

Bu gibi adlara sahip veritabanları oluşturmamanızı şiddetle öneririm. kesinlikle gerekiyorsa Ama burada restrictions:

  • içerebilir tanımlayıcı ASCII boş (0x00) veya boşluk ile bitmesi gerektiğini 255.
  • Veritabanı, tablo ve sütun isimleri bir değere sahip bir bayt karakter.
  • Veritabanı ve tablo adları “/”, “\”, “.” Veya dosya adlarına izin verilmeyen karakterleri içeremez.

aşağıdakileri yapabilirsiniz, bir veritabanı oluşturmak için:

mysql> create database `[email protected]*database$name`; 
+0

Dinamik olarak oluşturmak istiyorum, bunu yapabilir miyim? örneğin - set @a = name.surname değişkenine bir veritabanı adı vermek istiyorum; veritabanı oluştur @a; –

+0

Çok teşekkürler Andre. Tavsiye edilmemesine rağmen, buna ihtiyacım olduğu için çok yardımcı oldu. Teşekkürler :) –

+0

Bazı sunucular \ tablo adlarında kullanmama nasıl izin verir? – Petah

3

Basit: Yapma.

Sen

mysql'de backtick kullanarak egzotik tablo adlarını kaçabilir, ama ters tırnakların iç şey kullanabilir miyim bilmiyorum. Yazılım yaşam döngüsünüzün geri kalanı boyunca büyük miktarda acı verecektir.

Bu egzotik adları tutmak için başka bir tablo oluşturmanızı tavsiye ederim.

-- Example: 
CREATE TABLE _DatabaseMetadata (
    databaseName VARCHAR(255), 
    exoticName VARCHAR(255) 
) DEFAULT CHARSET=utf8; 
+0

Bu sorudan kaçınmak ............... – Pacerier

1

Kısa cevap:

  • etmeyin. A-Z, a-z, 0-9 ve _ karakterlerden oluşan tüm tanımlayıcıları tutmanızı önemle tavsiye ederim. "Egzotik" adınızı bir sütunda veya yorumda saklayabilirsiniz.

Uzun cevap:

  • Sen Sütunlarınızı, tablolar, anahtarlar, yabancı anahtarlar, görünümler adlandırabilir, hatta egzotik karakterleri kullanarak veri tabanları ama muhtemelen sen olacaksın olan gelecekte pişman.
  • Bunu yapmakta ısrar ederseniz, Kimlik belgelerinizi backticks (`) içinde alıntı yapmanız gerekir. durumda
  • Kişisel tanımlayıcı Sen iki kez belirten onu kaçabilir, içinde başka ` içermelidir (örn egzotik ` adı -> ` egzotik ` ` adı `) şeyler için
  • , o kadar basit olmamak You eğer Veritabanınız adına (basit bir alan dahil) egzotik (veya hatta geleneksel olmayan) karakterler kullanın, bu karakterler (benim bildiğim kadar az, AZ, 0-9 ve _ dışındakiler hariç) 4 basamaklı onaltılık dörtlü sayıya kaçtı @ ile kaçtı, örneğin ` benim veritabanı ` benim @ 0020database olur. Bu form, veritabanlarının/tablolarınızın saklandığı dizinlerin/dosyaların adı olarak kullanılır ve örn. Daha fazla bilgi information_schema.INNODB_SYS_FOREIGN, çok iyi OS-bağlı olabilir (yani, teorik olarak, buna uyum sağlamak için SHOW VARIABLES LIKE 'version_compile_os' çalıştırmak isteyebilirsiniz). Görüyorsunuz - egzotik isimlerle, her şey çok daha karmaşıklaşıyor ve sonuçta buna değmez.