CREATE TABLE test_table하는데 에러가 나타나는데
컴포넌트 소스 ZConnection.pas에서
디버그 라인이 걸리는 것을 보면
not FSqlHourGlass에서 에러가 걸립니다
그런데 MySQL Query Browser툴을 써서 table을 만들면 문제없이
만들어집니다
원인을 알수가 없어 질문 올립니다
<!--CodeS-->
ZConnection1 := TZConnection.Create(nil);
zConnection1.Protocol := 'mysql';
zConnection1.Port := 3306;
zConnection1.Database :='test_db';
zConnection1.HostName := 'localhost';
zConnection1.User :='test_user';
zConnection1.Password := 'test_pw';
ZConnection1.AutoCommit := false;
ZConnection1.readOnly := false;
ZConnection1.StartTransaction;
try
ZConnection1.Connect;
Application.MessageBox('서버 연결 성공','연결 Suiccess', MB_OK );
except
on E: Exception do
Application.MessageBox('서버와의 연결이 실패했습니다. ','연결 실패', MB_OK or MB_ICONERROR);
make_sql := 'CREATE TABLE test_table (';
make_sql := make_sql + ' name varchar(20), email varchar(120) binary,';
make_sql := make_sql + ' photo longblob)';
query1.Sql.Clear;
query1.Sql.Add(make_sql);
try
query1.ExecSql;
Application.MessageBox(테이블 생성 성공','생성 Suiccess', MB_OK );
except
on E: Exception do
Application.MessageBox('테이블 생성이 실패했습니다. ','생성 실패', MB_OK or MB_ICONERROR);
end;
<!--CodeE-->
컴포넌트 소스 ZConnection.pas
procedure TZConnection.ShowSQLHourGlass;
begin
if not FSqlHourGlass then --------------->여기서 걸립니다
Exit;
if SqlHourGlassLock = 0 then
begin
if Assigned(DBScreen) then
begin
CursorBackup := DBScreen.Cursor;
if CursorBackup <> dcrOther then
DBScreen.Cursor := dcrSQLWait;
end;
end;
Inc(SqlHourGlassLock);
end;
//ZConnection1 := TZConnection.Create(nil); ==>주석처리 했어요..
zConnection1.Protocol := 'mysql';
zConnection1.Port := 3306;
zConnection1.Database :='xxx';
zConnection1.HostName := 'localhost';
zConnection1.User :='xxxxx';
zConnection1.Password := 'xxxxx';
ZConnection1.AutoCommit := true; //===> false로 해놓았던데 true로 해놓아야해요...
ZConnection1.readOnly := false;
ZConnection1.StartTransaction; //===>이문을 쓰실려면 commit 혹은 rollback 처리해 주시구요.
try
ZConnection1.Connect;
Application.MessageBox('서버 연결 성공','연결 Suiccess', MB_OK );
except
on E: Exception do
Application.MessageBox('서버와의 연결이 실패했습니다. ','연결 실패', MB_OK or MB_ICONERROR);
end //===> end 문이 빠져 있었네요.
make_sql := 'CREATE TABLE test_table (';
make_sql := make_sql + ' name varchar(20), email varchar(120) binary,';
make_sql := make_sql + ' photo longblob)';
query1.Sql.Clear;
query1.Sql.Add(make_sql);
try
query1.ExecSql;
Application.MessageBox('테이블 생성 성공','생성 Suiccess', MB_OK );
except
on E: Exception do
Application.MessageBox('테이블 생성이 실패했습니다. ','생성 실패', MB_OK or MB_ICONERROR);
end;
위와 같이 하니까 zeos 6.1.5 에서는 에러없이 테이블이 생성이 되었습니다.
참고하세요...^^