Sosyal açıldı! Bir göz at → Hemen gir →

YARDIM GameServer {CALL UPDATE_RANKS} Error hatası

Speed

KY Üye
KAYIT
13 Ocak 2025
Mesajlar
39
Tepki puanı
7
Merhaba

gameserver de bu hata çıkıyor nereden kaynaklıdır bu prodüsürler den mi yoksa src ile alakalı mı

Database error: [ ODBC Error - 20.1.2025 18:40:0 ] ] Source: {CALL UPDATE_RANKS} Error: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Arithmetic overflow error converting expression to data type int. Description: Failed to execute statement.
 

bluemansiiz

KY Saygın Üye
Yardımsever
KAYIT
13 May 2022
Mesajlar
425
Çözümler
4
Tepki puanı
219
Connection kuramamış olabilir manuel çalıştırdğında aynı hatayı üretiyor mu ?
 

hsnarsln

KY Kıdemli Üye
Yardımsever
KAYIT
21 Ocak 2024
Mesajlar
235
Çözümler
3
Tepki puanı
60
Prosedür eksik veya hatalı olabilir

prodüsürler bu şekilde

USE [KO_DATABASE_SERVER_001]
GO
/****** Object: StoredProcedure [dbo].[UPDATE_RANKS] Script Date: 20.01.2025 21:01:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO



ALTER PROCEDURE [dbo].[UPDATE_RANKS]
AS

BEGIN
EXEC UPDATE_USER_KNIGHTS_RANK
EXEC UPDATE_USER_PERSONAL_RANK
EXEC UPDATE_KNIGHTS_RATING
END
 

Speed

KY Üye
KAYIT
13 Ocak 2025
Mesajlar
39
Tepki puanı
7
hangilerini düzeltmem lazım

1737396940223.png
 

Speed

KY Üye
KAYIT
13 Ocak 2025
Mesajlar
39
Tepki puanı
7
bu sorun devam ediyor hayla GameServer.exe de yardımcı olabilecek varmı


Database error: [ ODBC Error - 30.1.2025 6:18:0 ] ] Source: {CALL UPDATE_RANKS} Error: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Arithmetic overflow error converting expression to data type int. Description: Failed to execute statement.
 

solomonkane

KY Saygın Üye
Coder
Yardımsever
KAYIT
21 Şub 2024
Mesajlar
488
Çözümler
3
Tepki puanı
342
Konum
Palmiye Adaları
bu sorun devam ediyor hayla GameServer.exe de yardımcı olabilecek varmı


Database error: [ ODBC Error - 30.1.2025 6:18:0 ] ] Source: {CALL UPDATE_RANKS} Error: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Arithmetic overflow error converting expression to data type int. Description: Failed to execute statement.
c++ source tarafındaki kodu at birde SQL kodu at bana yeni kod şeklinde düzeltip vereyim büyük ihtimalle bağlantı hatası oldugu için kodda atlama yapıyor
 

hsnarsln

KY Kıdemli Üye
Yardımsever
KAYIT
21 Ocak 2024
Mesajlar
235
Çözümler
3
Tepki puanı
60
c++ source tarafındaki kodu at birde SQL kodu at bana yeni kod şeklinde düzeltip vereyim büyük ihtimalle bağlantı hatası oldugu için kodda atlama yapıyor

DBAgent.cpp

void CDBAgent::UpdateRanks()
{
unique_ptr<OdbcCommand> dbCommand(m_GameDB->CreateCommand());
if (dbCommand.get() == nullptr)
return;

if (!dbCommand->Execute(_T("{CALL UPDATE_RANKS}")))
ReportSQLError(m_GameDB->GetError());
}






sql


ALTER PROCEDURE [dbo].[UPDATE_RANKS]
AS

BEGIN
EXEC UPDATE_USER_KNIGHTS_RANK
EXEC UPDATE_USER_PERSONAL_RANK
EXEC UPDATE_KNIGHTS_RATING
END
 

solomonkane

KY Saygın Üye
Coder
Yardımsever
KAYIT
21 Şub 2024
Mesajlar
488
Çözümler
3
Tepki puanı
342
Konum
Palmiye Adaları
DBAgent.cpp

void CDBAgent::UpdateRanks()
{
unique_ptr<OdbcCommand> dbCommand(m_GameDB->CreateCommand());
if (dbCommand.get() == nullptr)
return;

if (!dbCommand->Execute(_T("{CALL UPDATE_RANKS}")))
ReportSQLError(m_GameDB->GetError());
}






sql


ALTER PROCEDURE [dbo].[UPDATE_RANKS]
AS

BEGIN
EXEC UPDATE_USER_KNIGHTS_RANK
EXEC UPDATE_USER_PERSONAL_RANK
EXEC UPDATE_KNIGHTS_RATING
END
SQL Prosedürün
Kod:
ALTER PROCEDURE [dbo].[UPDATE_RANKS]
AS
BEGIN
    SET NOCOUNT ON;
    SET ARITHABORT ON;  -- Aritmetik taşma hataları önlemesi için
    SET NUMERIC_ROUNDABORT OFF;

    BEGIN TRY
        EXEC UPDATE_USER_KNIGHTS_RANK;
        EXEC UPDATE_USER_PERSONAL_RANK;
        EXEC UPDATE_KNIGHTS_RATING;
    END TRY
    BEGIN CATCH
        -- Hata loglama
        PRINT 'Hata oluştu: ' + ERROR_MESSAGE();
    END CATCH;
END;

c++
Kod:
void CDBAgent::UpdateRanks()
{
   
    unique_ptr<OdbcCommand> dbCommand(m_GameDB->CreateCommand());
    if (dbCommand == nullptr)
    {
        std::cerr << "[Error] Failed to create ODBC command!" << std::endl;
        return;
    }

    // SQL prosedürünü calıstırır
    if (!dbCommand->Execute(_T("{CALL UPDATE_RANKS}")))
    {
        std::string errorMsg = m_GameDB->GetError();
        std::cerr << "[SQL Error] UPDATE_RANKS execution failed: " << errorMsg << std::endl;
        ReportSQLError(errorMsg);
    }
    else
    {
        std::cout << "[Success] UPDATE_RANKS executed successfully!" << std::endl;
    }
}

sonuç= sql tablon int veri tipine sığmayan bir değer ürettiği için hataya sebep oluyor.
 
Anasayfa Kayıt ol Giriş yap
Üst Alt