Q&A

  • 델파이로 mysql에 데이터를 삽입시 데이터가 짤리는 에러...
사용환경
: 델파이6
: 윈98

query와 updatesql을 사용해서 mysql에 데이터를 삽입하려고 합니다.
그런데 mysql에서 테이블 생성시 칼럼마다 잡아주었던 길이보다 작게 짤려서 데이터가 입력되고 있습니다. 그리고, mysql에서 직접 입력을 해도 마찬가지였습니다.

그런데 문제가 무엇인지를 발견했습니다.
테이블 생성 후 처음 입력하는 데이터 길이가 최대길이로 고정되는 것이었습니다.

그래서 모든 데이터를 삭제하고 원래 테이블을 만들 때의 칼럼 길이만큼 문자를 넣고 입력을 했더니 그 후론 문제가 없었습니다..

무엇이 문제일까요...
고수님들의 답변 부탁드립니다.

참고로 저는 query와 updatesql로 fieldbyname을 사용해서 데이터를 입력하고 있습니다.


  // Transaction 시작..(이후의 Commit 또는 Rollback에서 Transaction 끝남)..
  if not frmMD_WH_dmBS.dbYMM.InTransaction then
    frmMD_WH_dmBS.dbYMM.StartTransaction
  else
    frmMD_WH_dmBS.dbYMM.Commit;

    with frmMD_WH_dmBS.qryBuyer do
    begin
      try
        if not frmMD_WH_Main.GetIs_Modified() then //삽입 모드(Is_Modified = false)일 때...
        begin
          Insert;
          FieldByName('Buyer_Code').AsString := UpperCase(meBuyerCode.Text);
        end
        else //수정 모드(Is_Modified = true)일 때...
          Edit;

        FieldByName('Buyer_Name').AsString := edtBuyerName.Text;
        FieldByName('Buyer_Country').AsString := edtCountry.Text;
        FieldByName('Buyer_Address').AsString := edtAddress.Text;
        FieldByName('Buyer_ZipCode').AsString := edtZipCode.Text;
        FieldByName('Buyer_Phone').AsString := edtPhone.Text;
        FieldByName('Buyer_FAX').AsString := edtFAX.Text;
        FieldByName('Buyer_Email').AsString := edtEmail.Text;
        Post;
        ApplyUpdates;

        test := FieldByName('Buyer_Country').AsString;
        showmessage(test);

        frmMD_WH_dmBS.dbYMM.Commit;
      except
        On E:Exception do
        begin
          if pos('Key violation', E.Message) > 0 then
            ShowMessage('Error : Duplicated Key Data!!!')
          else if pos('Update failed', E.Message) > 0 then
            ShowMessage('Error : Save Failed!!!')
          else
          begin
            ShowMessage(E.Message+'로 인하여 데이타베이스를 최종저장하기 전상태로 환원합니다');
            frmMD_WH_dmBS.dbYMM.Rollback
          end;
        end;
//    raise;
      end; // try ~ except의 end
      CommitUpdates;  //on success, clear the cache
      Close;
      Open;

    end; // frmMD_WH_dmBS.qryBuyer with end
0  COMMENTS