使用下面的 SQL 创建 Firebird 数据库时,它不遵循指定的默认排序规则。但是,如果我在创建数据库后更改默认排序规则,它就可以工作。
这将创建一个默认排序规则为 UTF8 的数据库。我尝试省略 CharacterSet 的参数,但这将创建一个没有字符集的数据库,而不是 sql 语句提供的字符集。
编辑:添加组件设置
fConnection.Params.Add(Format('DriverID=%s', ['IB']));
fConnection.Params.Add(Format('Database=%s', [vDBFile]));
fConnection.Params.Add(Format('CharacterSet=%s', ['UTF8']));
fConnection.Params.Add(Format('user_name=%s', ['sysdba']));
fConnection.Params.Add(Format('password=%s', ['masterkey']));
fConnection.Params.Add(Format('ExtendedMetadata=%s', ['True']));
fConnection.Params.Add(Format('CreateDatabase=%s', ['Yes']));
fConnection.Params.Add(Format('Protocol=%s', ['TCPIP']));
fConnection.Params.Add(Format('Server=%s', [pInfo.xServer]));
vScript := TADScript.Create(nil);
vScript.Connection := fConnection;
vScript.Transaction := fTransaction;
vScript.SQLScripts.Add.SQL.Text :=
{leaving out quotes for readability}
SET SQL DIALECT 3;
SET CLIENTLIB 'c:\Firebird\fbclient.dll';
CREATE DATABASE 'TEST'
USER 'sysdba' PASSWORD 'masterkey'
PAGE_SIZE 16384
DEFAULT CHARACTER SET UTF8 COLLATION UNICODE_CI_AI;
vScript.ValidateAll;
vScript.ExecuteAll;
创建数据库后执行以下SQL会将默认排序规则更改为UNICODE_CI_AI
ALTER CHARACTER SET UTF8 SET DEFAULT COLLATION UNICODE_CI_AI
我应该使用什么 SQL 以便在创建数据库时正确设置默认排序规则?
我目前正在使用 Firebird 2.5.5 并使用 AnyDac 组件从 Delphi 2006 访问它。