Çözüldü Great Ofline Shop SQL Tabloları Aktarma Sorunu

  • Konuyu açan Konuyu açan melihalbayrak
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 14
  • Gösterim Gösterim 1K
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

melihalbayrak

Geliştirici
Geliştirici
Yardımsever Üye
Usta Üye
Mesaj
1.241
Çözümler
81
Beğeni
676
Puan
1.109
Ticaret Puanı
0
Verilen sql dosyalarını okutamıyorum. anlatıldığı gibi 3 sql dosyasını player tablosuna aktarmaya çalışıyorum üçünde de hata alıyorum. Mysql 8.0 kullanıyorum ondan kaynaklı sanırım? 3 sql dosyasınıda ekledim.

Linkleri görebilmek için giriş yap veya kayıt ol.


Update.sql aktarmasında çıkan hata

Kod:
Genişlet Daralt Kopyala
[SQL] Query update start
[ERR] 1146 - Table 'player.player_shop' doesn't exist
[ERR] ALTER TABLE `player_shop` ADD COLUMN `edit_mode` int(1) NOT NULL DEFAULT '0';
[SQL] Finished with error


Bu query.sql aktarmasında çıkan hata

SQL:
Genişlet Daralt Kopyala
 `id` int(255) NOT NULL AUTO_INCREMENT,
  `player_id` int(255) NOT NULL,
  `shop_vid` int(255) NOT NULL,
  `item_count` int(3) NOT NULL DEFAULT '0',
  `name` varchar(255) COLLATE utf8_polish_ci NOT NULL,
  `status` enum('OK','CLOSED') COLLATE utf8_polish_ci NOT NULL DEFAULT 'OK',
  `map_index` int(20) NOT NULL DEFAULT '0',
  `x` int(30) NOT NULL DEFAULT '0',
  `y` int(30) NOT NULL DEFAULT '0',
  `z` int(30) NOT NULL,
  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `date_close` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `ip` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '0.0.0.0',
  `gold` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '0',
  `cash` int(255) NOT NULL DEFAULT '0',
  `channel` int(1) NOT NULL DEFAULT '1',
  `edit_mode` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`,`shop_vid`)
) ENGINE=MyISAM;

DROP TABLE IF EXISTS `shop_cost`;
CREATE TABLE `shop_cost` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `time` int(255) NOT NULL DEFAULT '0',
  `time_type` enum('day','hour','normal_shop') NOT NULL DEFAULT 'day',
  `cost` int(255) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=12;

-- ----------------------------
-- Records of shop_cost
-- ----------------------------
INSERT INTO `shop_cost` VALUES ('5', '0', 'normal_shop', '5000000');
INSERT INTO `shop_cost` VALUES ('6', '1', 'hour', '100000');
INSERT INTO `shop_cost` VALUES ('7', '2', 'hour', '500000');
INSERT INTO `shop_cost` VALUES ('8', '3', 'hour', '1000000');
INSERT INTO `shop_cost` VALUES ('9', '1', 'day', '1500000');
INSERT INTO `shop_cost` VALUES ('10', '2', 'day', '2000000');
INSERT INTO `shop_cost` VALUES ('11', '3', 'day', '2500000');


DROP TABLE IF EXISTS `shop_limit`;
CREATE TABLE `shop_limit` (
  `channel` int(2) DEFAULT NULL,
  `map_index` int(11) DEFAULT NULL,
  `shop_limit` varchar(255) DEFAULT NULL
) ENGINE=MyISAM;

DROP TABLE IF EXISTS `player_gift`;
CREATE TABLE `player_gift` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `owner_id` int(255) NOT NULL,
  `date_add` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `date_get` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `status` enum('WAIT','OK') COLLATE utf8_polish_ci NOT NULL DEFAULT 'WAIT',
  `from` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '0',
  `reason` text COLLATE utf8_polish_ci NOT NULL,
  `vnum` int(255) NOT NULL DEFAULT '0',
  `count` bigint(255) NOT NULL DEFAULT '1',
  `socket0` int(10) unsigned NOT NULL DEFAULT '0',
  `socket1` int(10) unsigned NOT NULL DEFAULT '0',
  `socket2` int(10) unsigned NOT NULL DEFAULT '0',
  `socket3` int(10) unsigned NOT NULL DEFAULT '0',
  `socket4` int(10) unsigned NOT NULL DEFAULT '0',
  `socket5` int(10) unsigned NOT NULL DEFAULT '0',
  `attrtype0` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue0` smallint(6) NOT NULL DEFAULT '0',
  `attrtype1` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue1` smallint(6) NOT NULL DEFAULT '0',
  `attrtype2` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue2` smallint(6) NOT NULL DEFAULT '0',
  `attrtype3` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue3` smallint(6) NOT NULL DEFAULT '0',
  `attrtype4` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue4` smallint(6) NOT NULL DEFAULT '0',
  `attrtype5` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue5` smallint(6) NOT NULL DEFAULT '0',
  `attrtype6` tinyint(4) NOT NULL DEFAULT '0',
  `attrvalue6` smallint(6) NOT NULL DEFAULT '0',
  `applytype0` tinyint(4) NOT NULL DEFAULT '0',
  `applyvalue0` smallint(6) NOT NULL DEFAULT '0',
  `applytype1` tinyint(4) NOT NULL DEFAULT '0',
  `applyvalue1` smallint(6) NOT NULL DEFAULT '0',
  `applytype2` tinyint(4) NOT NULL DEFAULT '0',
  `applyvalue2` smallint(6) NOT NULL DEFAULT '0',
  `applytype3` int(11) NOT NULL DEFAULT '0',
  `applyvalue3` int(11) NOT NULL DEFAULT '0',
  `applytype4` int(11) NOT NULL DEFAULT '0',
  `applyvalue4` int(11) NOT NULL DEFAULT '0',
  `applytype5` int(11) NOT NULL DEFAULT '0',
  `apply
[SQL] Finished with error
 

Dosya Eklentileri

Çözüm
Sorun çözüldü. Tımestamp kısmını değiştirmek gerekiyor date ve date gibi gün tarih belirtilen yerlerde çünkü ilk tablolar aktarılırken account player vs tablolarında da tarih sayaçlarını timestamp olarak değiştirmiştim. Kapatılabilir.
Sadece query okutulcak diğerleri okutulmucak.
 
Kod bloguna ekli olan kodlar eksik sanırsam. Hatada ise player_shop isimli tablo yok diyor
 
Player_shop adlı tablo oluşturup query okutuyorum yine olmuyor
Metin2 database partlarını da unuttum ama şu kodu player dı sanırım ona sağ tıkla SQL Query diyerek yapıştır sorunun düzelir. Sorguyu kendim yazardım fakat offline_shop da neler var neler yok bilmediğimden senin dosyanın içeriğinden aldım

SQL:
Genişlet Daralt Kopyala
DROP TABLE IF EXISTS `player_shop`;
CREATE TABLE `player_shop` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `player_id` int(255) NOT NULL,
  `shop_vid` int(255) NOT NULL,
  `item_count` int(3) NOT NULL DEFAULT '0',
  `name` varchar(255) COLLATE utf8_polish_ci NOT NULL,
  `status` enum('OK','CLOSED') COLLATE utf8_polish_ci NOT NULL DEFAULT 'OK',
  `map_index` int(20) NOT NULL DEFAULT '0',
  `x` int(30) NOT NULL DEFAULT '0',
  `y` int(30) NOT NULL DEFAULT '0',
  `z` int(30) NOT NULL,
  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `date_close` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `ip` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '0.0.0.0',
  `gold` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '0',
  `cash` int(255) NOT NULL DEFAULT '0',
  `channel` int(1) NOT NULL DEFAULT '1',
  `edit_mode` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`,`shop_vid`)
) ENGINE=MyISAM;
 
Metin2 database partlarını da unuttum ama şu kodu player dı sanırım ona sağ tıkla SQL Query diyerek yapıştır sorunun düzelir. Sorguyu kendim yazardım fakat offline_shop da neler var neler yok bilmediğimden senin dosyanın içeriğinden aldım

SQL:
Genişlet Daralt Kopyala
DROP TABLE IF EXISTS `player_shop`;
CREATE TABLE `player_shop` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `player_id` int(255) NOT NULL,
  `shop_vid` int(255) NOT NULL,
  `item_count` int(3) NOT NULL DEFAULT '0',
  `name` varchar(255) COLLATE utf8_polish_ci NOT NULL,
  `status` enum('OK','CLOSED') COLLATE utf8_polish_ci NOT NULL DEFAULT 'OK',
  `map_index` int(20) NOT NULL DEFAULT '0',
  `x` int(30) NOT NULL DEFAULT '0',
  `y` int(30) NOT NULL DEFAULT '0',
  `z` int(30) NOT NULL,
  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `date_close` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `ip` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '0.0.0.0',
  `gold` varchar(255) COLLATE utf8_polish_ci NOT NULL DEFAULT '0',
  `cash` int(255) NOT NULL DEFAULT '0',
  `channel` int(1) NOT NULL DEFAULT '1',
  `edit_mode` int(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`,`shop_vid`)
) ENGINE=MyISAM;
Yok hocam olmuyor bu query okutmayla falan ilgili yok. Tamamen Mysql 8.0'den kaynaklı. Mysql 5.5 yüklü bir BSD indirdim ona attım query.sql dosyasını sorunsuz attı tablolarıda oluşturdu. Benim BSD 12.2 MYSQL 8.0'a atıyorum error veriyor.

5.5 sürümüne attığım query sql dosyasının oluşturduğu tabloları sql olarak yedekledim sonra benim sunucuya atmaya çalıştım yine error verdi.

Aktarmayı hallettim ama şimdide tabloların değerlerinde sorun var.
Adsız.jpg


Length yazan kısımlara değer girmem gerekiyor mesela name bloğundaki 255 gibi id kısmınada 255 yazmam gerekiyor yazıyorum save diyorum değer siliniyor. Değerleri kaydetmediği içinde oyun içinde pazar kurduğumda pazarı kurmuyor syser veriyor ch1 de ve tablo değeri default diyor veriyi tabloya yazamıyor.

SYSERR: Mar 16 15:23:52 :: DirectQuery: AsyncSQL::DirectQuery : mysql_query error: Field 'shop_vid' doesn't have a default value
query: insert into player_shop set item_count=1,player_id=12,name="asd",map_index=41,x=958233,y=252833,z=0,ip='192.168.1.8',date=NOW(),date_close=FROM_UNIXTIME(1615904632),channel=1

EKLEME: int değerini varchar yada varbinary seçip 255 yazdığımda kayıt işlemi oluyor ama int seçili olduğunda kayıt etmiyor. Benim bu tablo değerlerinde hangi veri tipini seçmem gerekiyor?
 
shop_vid sütununa not null demişsiniz ancak varsayılan değer tanımlamamışsınız. Bu yüzden hata veriyor olabilir. Not null seçeneğini kaldırıp tekrar deneyin ya da insert sorgusuna shop_vid değerini ekleyiniz.
 
shop_vid sütununa not null demişsiniz ancak varsayılan değer tanımlamamışsınız. Bu yüzden hata veriyor olabilir. Not null seçeneğini kaldırıp tekrar deneyin ya da insert sorgusuna shop_vid değerini ekleyiniz.
Bu desing kısmında AUTO UNCREMENT, UNSİGNED VE ZEROFİLL olarak 3 işaretli yer var oradan zerofill'i işaretlediğimde int değerinde 255 değerini verebiliyorum. Bu zerofill ne oluyor bilginiz var mı?
 
Mesela 45 değerini kaydediyorsunuz diyelim. Zerofill olduğunda 45’in önüne 0’lar ekliyor. Yani bir alana tanımladığınız genişlik var ve sizin girdiğiniz değer genişlikten az ise kalanları kendi dolduruyor. Daha önce bunu kullanmadım hiç. Unsigned olarak ayarlayabilirsiniz

Zerofill ve unsigned arasındaki farkı daha iyi anlamanız için bir örnek bırakıyorum.
SQL:
Genişlet Daralt Kopyala
CREATE TABLE test (x INT(11) ZEROFILL NOT NULL, y INT(11) NOT NULL);
INSERT INTO test (x, y) VALUES (45, 45);
SELECT x, y FROM test;

Çıktı şöyle olacak;
SQL:
Genişlet Daralt Kopyala
           x             y
 00000000045            45
 
Anladım fakat olmuyor bu 8 sürümüyle uyum sağlamıyor tablolar pazar kurulmuyor üstte verdiğim ch1 syser hatasını veriyor shop_vıd için.
 
Dediğim şekilde düzenlemeyi deneyin
 
Aktarmayı hallettim ama şimdide tabloların değerlerinde sorun var.6197 eklentisini görüntüle

Length yazan kısımlara değer girmem gerekiyor mesela name bloğundaki 255 gibi id kısmınada 255 yazmam gerekiyor yazıyorum save diyorum değer siliniyor. Değerleri kaydetmediği içinde oyun içinde pazar kurduğumda pazarı kurmuyor syser veriyor ch1 de ve tablo değeri default diyor veriyi tabloya yazamıyor.

SYSERR: Mar 16 15:23:52 :: DirectQuery: AsyncSQL::DirectQuery : mysql_query error: Field 'shop_vid' doesn't have a default value
query: insert into player_shop set item_count=1,player_id=12,name="asd",map_index=41,x=958233,y=252833,z=0,ip='192.168.1.8',date=NOW(),date_close=FROM_UNIXTIME(1615904632),channel=1

EKLEME: int değerini varchar yada varbinary seçip 255 yazdığımda kayıt işlemi oluyor ama int seçili olduğunda kayıt etmiyor. Benim bu tablo değerlerinde hangi veri tipini seçmem gerekiyor?
illa uzunluk değeri vermenize gerek yok zaten türlerin kendi uzunlukları var 32767 & -32768 gibi int değerinin bir değer aralığı var zaten.
int de olmama varcharda olmasının nedeni integer tam sayı tutarken varchar string tutar. ki neden kayıt eklemeye çalıştığınızı anlamadım hala.
oyun içerisinde pazar kurduğunuzda zaten otomatik olarak tabloya ekleyecektir.
 
Mysql 5.5 ile 8.0 arasında kod farklılıkları var.
Queryi sorunsuz okutmak için sql dosyası içindeki kodlar da düzenleme yapmanız gerekiyor.
Gerekli tabloları oluşturun ve sql dosyalarinizi düzenleyerek değişmesi gereken yerleri değiştirin.
Mesela datetime tanımı, buna en yakın örneklerden birisi. Tabi bunu yapmak için 8.0 sql tanımları ve 5.5 sql tanımları ile karşılaştırma yapmanız gerekiyor. Yani elinizdeki 5.5 uyumlu sql dosyasını 8.0 a cevireceksiniz.

Bu şekilde MariaDB destekli sql dosyasını mysql 5.5 e çevirip kullanmistim.
 
Sorun çözüldü. Tımestamp kısmını değiştirmek gerekiyor date ve date gibi gün tarih belirtilen yerlerde çünkü ilk tablolar aktarılırken account player vs tablolarında da tarih sayaçlarını timestamp olarak değiştirmiştim. Kapatılabilir.
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst