2010-04-28 20 views
7

Dolayısıyla, hedef ortamımız linux, mysql büyük/küçük harf duyarlı hale getiriyor. Linux ortamımızı, lower_case_table_names değişkeniyle büyük/küçük harfe duyarlı hale getiremeyeceğimizin farkındayım, ancak bunu tercih etmemekteyiz. Birkaç kez bir vaka uyuşmazlığıyla ısırıldık çünkü dev rigs OSX'tir ve mysql orada büyük küçük harf duyarlı değildir.MySql tablo adı büyük/küçük harf duyarlılığını, büyük/küçük harfe duyarlı olmayan dosya sistemlerinde zorlayabilir miyim?

Masa adlarını MySql (MySql (5.0.83) değerindeki OSX yüklememde büyük/küçük harfe duyarlı hale getirmenin bir yolu var mıdır, böylece linux üzerinde çalışan tümleştirme sunucularına dağıtılmadan önce bir tablo adı uyuşmazlığı yakalarız. ?

cevap

-1

Burada yapılacak en iyi şey, herhangi bir çakışma olmaması için tablo adlarınızı düzeltmektir. Sadece durum tarafından ayırt edilmesi kötü bir fikirdir ve (muhtemelen bildiğiniz gibi) karışıklığa yol açar.

Ancak, oluşturma sırasında tablo adlarının çevresindeki tek tırnak işaretlerini kullanmayı deneyin. Bu, windows üzerinde çalışan sorgu tarayıcısıyla SUSE/Linux/MySQL 5.0 üzerinde çalışır.

CREATE TABLE `MySchema`.`test` (
    `COMMENT` text 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 


CREATE TABLE `MySchema`.`Test` (
    `COMMENT` text 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

insert into MySchema.test values ('this is table test'); 
insert into MySchema.Test values ('this is table Test'); 


select * from MySchema.test; 
select * from MySchema.Test; 

Büyük/küçük harf duyarlı olmayan bir istemci yanlış bir tablo kullanarak bir tablo isterse başarısız olmasını ister misiniz? MySQL veritabanı Linux üzerinde çalışıyorsa başarısız olması gerektiğine inanıyorum.

Kontrol dışarı this link "kayda değer bir istisnası Unix tabanlı fakat küçük harfe duyarlı değildir varsayılan bir dosya sistemi türünü (HFS +) kullanır. Ancak, Mac OS X, olduğu, Mac OS X de UFS miktarlar vardır destekler herhangi bir Unix'te olduğu gibi büyük/küçük harfe duyarlı.

+1

Bizim masa isimleri çatışma yok: tablolar artık harf duyarlı olmalıdır /usr/local/Cellar/mysql/<version>/my.cnf

sorgusuyla. Ancak bazen tablo isimlerini yanlış olarak tanımlayan bir kodumuz var ve varsayılan OS X dosya sisteminin büyük/küçük harf duyarsız doğası, linux'a dağıtılana kadar hatayı görmediğimiz anlamına geliyor. –

1

my.cnf'da lower_case_table_names=0 değerini ayarlayın. Eğer homebrew aracılığıyla kurduysanız

, dosya buradadır: mysql> select count(*) from user; ERROR 1146 (42S02): Table 'xxx.user' doesn't exist mysql> select count(*) from User; +----------+ | count(*) | +----------+ | 1 | +----------+ 1 row in set (0.00 sec)

İlgili konular