게임 정보 불러오기 400 에러

  • 뒤끝 SDK 버전 : 5.11.2
  • 프로젝트명 : hoosik
  • 스테이터스 코드 : 400
  • 에러 코드 : Exception
  • 에러 메시지 : message : An item with the same key has already been added. Key: USER_TOWN
var questBro = Backend.GameData.GetMyData("USER_QUEST", new Where(), 1);
		if (!questBro.IsSuccess())
		{
			Debug.LogError("Failed to load user quest info" + questBro);
			return new List<GameDataQuest>();
		}

위의 코드로 USER_QUEST를 불러올때 다른 게임정보와 중복되는 키가 없음에도 에러가 지속적으로 나옵니다.

해당 코드 외에 다른 게임정보를 똑같은 로직으로 불러왔을때는 정상적으로 불러와집니다.

혹시 몰라 USER_TOWN과 USER_QUEST를 지우고 다시 만들어 봤는데 아래와 같은 상황이 반복됩니다.

  1. USER_000 에서 똑같은 에러 발생
  2. USER_000 을 지우고 다시 만들면 USER_ㅁㅁㅁ 에서 에러 발생
  3. 모두 지우고 재생성하면 다시 USER_TOWN에서 에러가 발생합니다.

해당 에러가 발생하는 USER 게임정보 테이블은 모두 압축데이터 포맷을 사용하고 있습니다.

안녕하세요 개발자님,
관련 내용 확인하여 안내드릴 수 있도록 하겠습니다.

안녕하세요 개발자님,

상세 내용 확인을 위해 추가 정보가 필요하여 요청드립니다.
아래의 두 가지 정보 확인하여 댓글 남겨주시면 확인 후 답변드리도록 하겠습니다.

  1. 데이터 삽입 코드
  2. 콘솔에서 문제가 되는 테이블 및 컬럼 정보

감사합니다.

public List<GameDataQuest> GetUserQuestInfo()
	{
		var questBro = Backend.GameData.GetMyData("USER_QUEST", new Where(), 1);
		if (!questBro.IsSuccess())
		{
			Debug.LogError("Failed to load user quest info" + questBro); // 이 부분에서 에러 발생	
			return new List<GameDataQuest>();
		}

		JsonData gameDataQuestJson = questBro.FlattenRows();
		if (gameDataQuestJson.Count <= 0)
		{
			Debug.Log("데이터가 존재하지 않습니다");
			return new List<GameDataQuest>();
		}

		List<GameDataQuest> questInfoList = new List<GameDataQuest>();
		for (int i = 0; i < gameDataQuestJson.Count; i++)
		{
			GameDataQuest gameDataQuest = new GameDataQuest(gameDataQuestJson[i]);
			questInfoList.Add(gameDataQuest);
		}

		if (questInfoList.Count < 5)
		{
			questInfoList = AddUserQuest(questInfoList, 5 - questInfoList.Count);
		}

		LocalDataManager.Instance.SaveData(questInfoList, "USER_QUEST", backendManager.encryptMode);
		return questInfoList;
	}

에러 콘솔

  • Failed to load user quest infostatusCode : 400
    errorCode : Exception
    message : An item with the same key has already been added. Key: USER_TOWN

불러오는 데이터의 콘솔에서의 스키마 정보

에러뜨는 곳의 콘솔에서의 스키마 정보

좋아요 1

안녕하세요 개발자님.

관련 내용을 확인해 본 결과
해당 케이스와 로그로는 정상 작동되고 있음을 확인했습니다.

만약 해당 에러가 계속 발생하는 경우,
최소 조건 체크를 위해 로그인 → 게임정보 불러오기(GetMyData(“tableName”, new Where()) 만으로도 호출했을 경우 에러가 발생하는지 확인하여 공유해 주시면 상세히 확인해 안내드리겠습니다.
감사합니다.

안녕하세요. 해당 에러가 간헐적으로 발생하는데 혹시 뒤끝에서 어떠한 경우에 해당 에러를 리턴하는지 알 수 있을까요??

GameData, PlayerData를 SDK 초기화 후 처음 호출할 때 서버에서 압축테이블 데이터를 불러와 캐싱하는 로직이 존재합니다.
만약 비동기로 동시에 함수를 호출할 경우, 캐싱이 동시에 이루어지면서 해당 에러가 발생할 수 있습니다.

함수 하나에 비동기로 GameData 함수를 여러번 호출하는 로직이 존재하는지 확인해 주시면 감사하겠습니다.