Əsas səhifə > MySQL administration > lower_case_table_names system variable

lower_case_table_names system variable

Database və table adları-nın case sensitive olub-olmaması vacib məsələrdən biridir. Yəni məntiqlə City ilə city arasında heç bir fərq olmamalıdır.
Lakin Unix\Linux-da bu case sesnsitivity mövcuddur. Yəni əgər create table və yaxud create database zamanı biz city əvəzinə City yazsaq bu elə bu cür də saxlanılacaq. Lakin Windows və Mac OS X-da bu belə deyil.
Hər halda bizə daha uyğun olar ki bütün sistemlərdə lower_case istifadə olunsun. Bunu əldə edə bilməyimiz üçün
lower_case_table_names system dəyişənindən istifadə etməliyik. Bu dəyişən 3 qiymət alır.

From Documentation:
0—Table and database names are stored on disk using the lettercase specified in the CREATE TABLE or CREATE DATABASE statement. Name comparisons are case sensitive. You should not set this variable to 0 if you are running MySQL on a system that has case-insensitive file names (such as Windows or Mac OS X). If you force this variable to 0 with –lower-case-table-names=0 on a case-insensitive file system and access MyISAM tablenames using different lettercases, index corruption may result.

1—Table names are stored in lowercase on disk and name comparisons are not case sensitive. MySQL converts all table names to lowercase on storage and lookup. This behavior also applies to database names and table aliases.

2—Table and database names are stored on disk using the lettercase specified in the CREATE TABLE or CREATE DATABASE statement, but MySQL converts them to lowercase on lookup. Name comparisons are not case sensitive. This works only on file systems that are not case sensitive! InnoDB table names are stored in lowercase, as for lower_case_table_names=1.

Default olaraq UNİX\Linux-da bu dəyişənin qiyməti 0-dır.

mysql> select @@lower_case_table_names;
+--------------------------+
| @@lower_case_table_names |
+--------------------------+
|                        0 |
+--------------------------+
1 row in set (0.00 sec)

Windows-da default 1 və Mac OS X-da isə 2-dir.

Bütün sistemlər üçün 1 qiymətinin qoyulması məsləhət görülür
Mən də elə etdim amma maraqlı hadisələr baş verdi necə deyərlər sürpriz😉
Əvvəlcədən world database-imdə 3 cədvəlim var idi hamısı da case sensitive:

mysql> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| City            |
| Country         |
| CountryLanguage |
+-----------------+
3 rows in set (0.00 sec)

lower_case_table_names=1 etdim:

mysql> select @@lower_case_table_names;
+--------------------------+
| @@lower_case_table_names |
+--------------------------+
|                        1 |
+--------------------------+
1 row in set (0.00 sec)

Və daha sonra əlimdə olan bu 3 cədvəldən birini drop etmək istədim:

mysql> drop table city;
ERROR 1051 (42S02): Unknown table 'city'

mysql> drop table City;
ERROR 1051 (42S02): Unknown table 'city'

Həm kiçik hərflə, həm də böyük hərflə yazmağıma baxmayaraq belə bir cədvəlin olmadığını iddia edir😉
Halbuki show tables hələ də 3 cədvəlin mövcudluğundan xəbər verir:

mysql> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| City            |
| Country         |
| CountryLanguage |
+-----------------+
3 rows in set (0.00 sec)

Daha sonra isə world database-ni drop etmək istədim:

mysql> drop database world;
ERROR 1010 (HY000): Error dropping database (can't rmdir './world', errno: 39

errno 39:

[root@localhost ~]# perror 39
OS error code  39:  Directory not empty

Əslində bunun heç dəxlisi də olmamalıdır söhbətə 1ci dəfə deyil ki database drop edirik…
Düşündüm və lower_case_table_names-i yenidən =0 etdim.

mysql> drop database world;
Query OK, 3 rows affected (0.11 sec)

Və yalnız bundan sonra drop getdi. Bunun səbəbi nədir bilmirəm lakin təhlükəli bir şey olduğu açıq-aşkar görünür.
Düşünürəm ki MySQL-i fresh install etdikdən dərhal sonra lower_case_table_names-i dəyişmək daha doğru olacaq. İçində məlumatlar ola-ola bu dəyişənə toxunmaq məsləhət deyil.

Təşəkkürlər😉

  1. Hələlik heç bir şərh yoxdur
  1. No trackbacks yet.

Bir cavab yazın

Sistemə daxil olmaq üçün məlumatlarınızı daxil edin və ya ikonlardan birinə tıklayın:

WordPress.com Loqosu

WordPress.com hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Twitter rəsmi

Twitter hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Facebook fotosu

Facebook hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

Google+ foto

Google+ hesabınızdan istifadə edərək şərh edirsinz. Çıxış / Dəyişdir )

%s qoşulma

%d bloqqer bunu bəyənir: