Yukarıdaki problemi işlem yapılmaya çalışına sutun tipi ve boyutu ile sutun içerisine koymaya çalıştığınız veri tipi ve boyutu uyuşmuyor.
Bu tür sorunlarda en basit çözüm mevcut tablodaki sutunun tipi ve boyutunu yükseltmektir.
Mevcut SUTUN_ADI olan sutunun veri tipini BLOB tipinde güncelledik.
ALTER TABLE TABLO_ADI MODIFY COLUMN SUTUN_ADI BLOB;
BLOB : 64KB veri tutabiliyor.
Ref :
https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.htmlLinkte diğer benzer veri tipleri ve boyutlarına dair bilgi mevcut.
---
Aynı tablo üzerinde data merge edilecekse, yapılacak işlemler.
Tablolarda ayraçlar ve composite(birleştirilmiş) key ile oluşturulmuş primary key kullanmalısınız.
Yanlış hatırlamıyorsam, şehir bazlı aynı DB 'leri klonlayarak oluşturulmuş bir sisteminiz vardı.
Yine yanlış hatırlamıyorsam, benzer bir çözüm önerisinde bulunmuştum.
Öncelikle mevcut çözüm üzerinden ondan daha iyi fakat daha optimum bir çözüme ulaşmak için yapıda ufak tefek dokunuşlara ihtiyaç var.
Veri tipi değerini büyütme ihtiyacı neden çıktı bilmiyorum ama aşağıdakine benzer bir gidişat olması lazım.
products -> ürünler tablosu (ankara, samsun, istanbul) : tablo klon olarak oluşturulmuş her yerde aynıdır diye düşünüyorum. Bunu birleştirmek için sadece ek sutunlar eklemek ve primary key composite yapmak yeterli olacaktır.
Yemeksepeti gibi bir kullanıcı giriş yaptığınızda, şehir ilk ekrandan şehir seçtirin (zorunlu olsun).
Sonrasında seçilen şehri session nesnesine atın, kullanıcı browser üzerinde dolandığı sürece şehir id'sini session'dan alıp, aşağıdaki yapıda tabloya parametre değeri olarak set edersiniz.
eski hali
productsid
name
description
created_at
price
updated_at
creator
updater
yeni hali
productssehir_id
id
name
description
created_at
price
updated_at
creator
updater
composoite primary key -> ALTER TABLE products ADD CONSTRAINT PK_products PRIMARY KEY (sehir_id,id);
Mevcut yazılımdaki products tablosuna atılmış olan tüm sorgularıda sehir_id kriteri eklenmelidir.
mevcutta istanbul şehri için oluşturulmuş db'deki 1 ID'li ürün getir.
select * from products where sehir_id = 34 and id = 1;
composite primary key'de sehir_id ve id değerlerinin birleştirilmiş hali tekilliği sağlar, o sebeple mevcut products tablosundaki id değerlerinizi değiştirmenize gerek kalmaz.
Aşağıdaki gibi kayıtlar oluşturabilirsiniz.
istanbuldaki db'deki verilerin taşındıktan sonraki hali
34,1,'ayakkabı', 'erkek spor ayakkabı, air', '2021-05-27 13:10:23.122', 500.00,'2021-05-27 13:10:23.122', 'turgay can', 'turgay can'
34,2,'çorap', 'erkek spor çorabı', '2021-05-27 13:10:23.122', 500.00,'2021-05-27 13:10:23.122', 'turgay can', 'turgay can'
ankaradaki db'deki verilerin taşındıktan sonraki hali
6,1,'ayakkabı', 'erkek spor ayakkabı, air', '2021-05-27 13:10:23.122', 500.00,'2021-05-27 13:10:23.122', 'turgay can', 'turgay can'
6,2,'çorap', 'erkek spor çorabı', '2021-05-27 13:10:23.122', 500.00,'2021-05-27 13:10:23.122', 'turgay can', 'turgay can'
umarım anlatabilirmişimdir.
data migration konusunda destek olabilirim.
iyi çalışmalar.