SORU
1 EKİM 2009, PERŞEMBE


Nasıl MySQL SIRALAMA türü sütun için daha fazla üye eklerim?

MySQL reference manual bunun nasıl yapılacağı hakkında net bir örnek sağlamaz.

Daha fazla ülke eklemek istiyorum bu ülke isimleri NUMARALANDIRMA türü bir sütun var. Bunu başarmak için doğru MySQL sözdizimi nedir?

İşte benim girişimi:

ALTER TABLE carmake CHANGE country country ENUM('Sweden','Malaysia');

Ben olsun hata: ERROR 1265 (01000): Data truncated for column 'country' at row 1.

country sütun yukarıda ifade NUMARALAMA türü sütun.

TABLO OLUŞTURMAK GÖSTERÇIKIŞ:

mysql> SHOW CREATE TABLE carmake;
 --------- --------------------------------------------------------------------- 
| Table   | Create Table
 --------- --------------------------------------------------------------------- 
| carmake | CREATE TABLE `carmake` (
`carmake_id` tinyint(4) NOT NULL AUTO_INCREMENT,
`name` tinytext,
`country` enum('Japan','USA','England','Australia','Germany','France','Italy','Spain','Czech Republic','China','South Korea','India') DEFAULT NULL,
PRIMARY KEY (`carmake_id`),
KEY `name` (`name`(3))
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=latin1 |
 --------- --------------------------------------------------------------------- 
1 row in set (0.00 sec)

Carmake FARKLI bir ülke SEÇİNÇIKIŞ:

 ---------------- 
| country        |
 ---------------- 
| Italy          |
| Germany        |
| England        |
| USA            |
| France         |
| South Korea    |
| NULL           |
| Australia      |
| Spain          |
| Czech Republic |
 ---------------- 

CEVAP
1 EKİM 2009, PERŞEMBE


Senin kod benim için çalışıyor. İşte benim test case:

mysql> CREATE TABLE carmake (country ENUM('Canada', 'United States'));
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW CREATE TABLE carmake;
 --------- ------------------------------------------------------------------------------------------------------------------------- 
| Table   | Create Table                                                                                                            |
 --------- ------------------------------------------------------------------------------------------------------------------------- 
| carmake | CREATE TABLE `carmake` (
  `country` enum('Canada','United States') default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
 --------- ------------------------------------------------------------------------------------------------------------------------- 
1 row in set (0.00 sec)

mysql> ALTER TABLE carmake CHANGE country country ENUM('Sweden','Malaysia');
Query OK, 0 rows affected (0.53 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> SHOW CREATE TABLE carmake;
 --------- -------------------------------------------------------------------------------------------------------------------- 
| Table   | Create Table                                                                                                       |
 --------- -------------------------------------------------------------------------------------------------------------------- 
| carmake | CREATE TABLE `carmake` (
  `country` enum('Sweden','Malaysia') default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
 --------- -------------------------------------------------------------------------------------------------------------------- 
1 row in set (0.00 sec)

Ne hata görüyor musunuz?

FWIW, bu da işe yarar:

ALTER TABLE carmake MODIFY COLUMN country ENUM('Sweden','Malaysia');

Aslında ülke bir tablo tavsiye yerine sütun numaralandırma istiyorum. Oldukça büyük ve garip bir numaralama için hangi ülkeden yüzlerce olabilir.

EDİT: hata mesajı görebiliyorum Şimdi

ERROR 1265 (01000): Data truncated for column 'country' at row 1.

Senin ENUM görünmeyen ülke sütununda bazı değerler var sanırım. Aşağıdaki komutun çıktısı nedir?

SELECT DISTINCT country FROM carmake;

Aşağıdaki komutun çıktısı Nedir? BAŞKA bir DÜZENLEME:

SHOW VARIABLES LIKE 'sql_mode';

STRICT_TRANS_TABLES STRICT_ALL_TABLES? Bu bir hata, yerine her zamanki uyarı MySQL bu durumda sana verecek yol açabilir.

BAŞKA bir EDİT: Tamam, ben şimdi kesinlikle ENUM yeni değildir tablo değerleri var. ENUM yeni tanımı sadece 'Sweden' 'Malaysia' sağlar. Tablo 'USA', 'India' ve birkaç kişi daha var.

(BELKİ) SON DÜZENLEME: bunu yapmak için çalışıyoruz düşünüyorum

ALTER TABLE carmake CHANGE country country ENUM('Italy', 'Germany', 'England', 'USA', 'France', 'South Korea', 'Australia', 'Spain', 'Czech Republic', 'Sweden', 'Malaysia') DEFAULT NULL;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ethr95awd

    ethr95awd

    8 Kasım 2006
  • picster

    picster

    20 NİSAN 2006
  • UKF Dubstep

    UKF Dubstep

    29 NİSAN 2009