0

mORMot コンポーネントをテストします。標準デモ「28 - Simple RESTful ORM Server」をコンパイルしました。実行するとエラーが発生します。

コード:

var
  aModel: TSQLModel;
  aProps: TSQLDBConnectionProperties;
  aRestServer: TSQLRestServerDB;
  aHttpServer: TSQLHttpServer;
begin
// set logging abilities
SQLite3Log.Family.Level := LOG_VERBOSE;
//SQLite3Log.Family.EchoToConsole := LOG_VERBOSE;
SQLite3Log.Family.PerThreadLog := ptIdentifiedInOnFile;
// ODBC driver e.g. from http://ftp.postgresql.org/pub/odbc/versions/msi


aProps := TODBCConnectionProperties.Create('','Driver=PostgreSQL Unicode'+
  {$ifdef CPU64}'(x64)'+{$endif}';Database=postgres;'+
  'Server=127.0.0.1;Port=5433;UID=postgres;Pwd=postgres','','');

//readln;

try
// get the shared data model
aModel := DataModel;
// use PostgreSQL database for all tables
VirtualTableExternalRegisterAll(aModel,aProps);
try
  // create the main mORMot server
  aRestServer := TSQLRestServerDB.Create(aModel,':memory:',false); // authentication=false
  try
    // optionally execute all PostgreSQL requests in a single thread
    aRestServer.AcquireExecutionMode[execORMGet] := amBackgroundORMSharedThread;
    aRestServer.AcquireExecutionMode[execORMWrite] := amBackgroundORMSharedThread;
    // create tables or fields if missing
    aRestServer.CreateMissingTables;
    // serve aRestServer data over HTTP
    aHttpServer := TSQLHttpServer.Create(SERVER_PORT,[aRestServer],'+',useHttpApiRegisteringURI);
    try
      aHttpServer.AccessControlAllowOrigin := '*'; // allow cross-site AJAX queries
      writeln('Background server is running.'#10);
      write('Press [Enter] to close the server.');
      readln;
    finally
      aHttpServer.Free;
    end;
  finally
    aRestServer.Free;
  end;
finally
  aModel.Free;
end;
finally
  aProps.Free;
end;
end.

エラー

{"メッセージ":"TODBCLib エラー: [08001] サーバーに接続できませんでした;\nターゲット マシンがアクティブに拒否したため、接続できませんでした。\r\n [127.0.0.1:5433]

クリアする方法。

4

1 に答える 1

2

Delphi Seattle 10 とhttp://ftp.postgresql.org/pub/odbc/versions/msi/psqlodbc_09_03_0400.zipの ODBC ドライバーでテストしましたが、問題はありませんでした。

ソースが期待するのと同じポートで実行するように PostgreSQL サーバーが定義されていることを確認します。デフォルトのポート番号を使用した場合は、5433値を編集します。5432

偏執的であるため、常にデフォルトのポートを変更するようにしています。これにより、ネットワーク スキャン攻撃が減少します (少なくとも高速スキャンから)。私はポート 22 を ssh に使用したり、5432 を PostgreSQL に使用したりしません。ご不便おかけしてすみません。

于 2015-09-07T12:11:02.683 に答える