Daha çox

MySQL cədvəlinə POINT NOT NULL sütunu əlavə etmək olmur

MySQL cədvəlinə POINT NOT NULL sütunu əlavə etmək olmur


Bu yaxınlarda MySQL 5.7.9 -a yüksəltdim və masa mühərrikim üçün MyISAM -dan istifadə edirəm.

Yeni bir POINT sütunu əlavə edin:

ALTER CƏDVƏLİ  Əlavə et centroid POINT NOT NULL;

bu səhvi verir:

ERROR 1138 (22004): NULL dəyərinin etibarsız istifadəsi

Sütunu onsuz da yarada bilərəmNULL DEYİLamma sonra sütunda məkan indeksi yarada bilmirəm. Bu, MySQL 5.6 -da mənim üçün işləmişdir və sənədlərdə müvafiq bir şey görmürəm.


problem belə idi: mövcud satırları olan bir masada sıfır olmayan bir sütun yarada bilməzsiniz (bunu edə bilmədim).

düzgün ardıcıllıq:

  1. dəyişdirmə cədvəli sütun mərkəz nöqtəsi əlavə edin
    (sütunu əlavə edin, heç bir məhdudiyyət yoxdur)
  2. yeniləmə centroid = ST_Centroid (forma) təyin edin
    (yəni sütunu dəyərlərlə doldurun)
  3. dəyişdirmə cədvəli mərkəz nöqtəsini dəyişdirin null deyil
    (məhdudiyyət əlavə edin)

Bunun üzərində işləmək üçün yaradılan sütunlardan istifadə etməyi ümid edirdim:

alter table apb sütun əlavə et geom POINT AS (POINT (lat, lon)) DEĞİL NULL;

amma eyni səhvi əldə edin. Bu edir düz arifmetik sütunlar üçün iş:

alter table apb sütun əlavə edin int int (lat+lon) STORED NOT NULL;

Ancaq əvvəlki sintaksisdən cədvəl yaradarkən və sonra toplu yükdə istifadə edə bilərsiniz. Nəsil qaydası, hələ də ağrılı bir şəkildə ağrılı şəkildə yavaşca əlavə etmək/yeniləmək/dəyişdirmək (sıfır deyil) addımlarından çəkindiyiniz deməkdir.


Videoya baxın: MySQL Constraints Tutorial with 20+ Examples - NOT NULL, UNIQUE, DEFAULT, CHECK, PRIMARYKEY, INDEXES