GARANTIR DESCONTO

Fórum FireBird #49420

19/02/2005

0

Queria a opnião de vocês:

Me aconselharam a cria o banco com [b:f0dfcca54c]CHARACTER SET Win1252[/b:f0dfcca54c]e [b:f0dfcca54c]COLLATE INTL850[/b:f0dfcca54c], pois funcionaria blz com o português, maisuculo e minusculo, acentos ....

Qaundo fui criar os indices do banco me deparei com o seguinte erro

ISC ERROR CODE:335544351

ISC ERROR MESSAGE:
unsuccessful metadata update
key size too big for index I_CLIENTE_NOME


Fui pesquisar sobre e olha que encontrei:


gandalf.nho Para esse CHARACTER SET e COLLATE, o tamanho máximo de um índice é de 84 caracteres, terá que diminuir o tamanho do campo varchar até que funcione ou removê-lo da chave


Queria saber se isso é verdade?
Queria saber qual vocês usam, e quais limitações?


Sistemald

Sistemald

Responder

Posts

20/02/2005

Gandalf.nho

Queria a opnião de vocês: Me aconselharam a cria o banco com [b:ae4a87249d]CHARACTER SET Win1252[/b:ae4a87249d]e [b:ae4a87249d]COLLATE INTL850[/b:ae4a87249d], pois funcionaria blz com o português, maisuculo e minusculo, acentos .... Qaundo fui criar os indices do banco me deparei com o seguinte erro
ISC ERROR CODE:335544351

ISC ERROR MESSAGE:
unsuccessful metadata update
key size too big for index I_CLIENTE_NOME
Fui pesquisar sobre e olha que encontrei: [quote:ae4a87249d]gandalf.nho Para esse CHARACTER SET e COLLATE, o tamanho máximo de um índice é de 84 caracteres, terá que diminuir o tamanho do campo varchar até que funcione ou removê-lo da chave


Queria saber se isso é verdade?
Queria saber qual vocês usam, e quais limitações?[/quote:ae4a87249d]

É verdade sim, se você quiser usar esse CHARACTER SET/COLLATE vai ter que ficar limitado a 84 caracteres em campos que serão usados para índices. Embora haja outra combinação CHARACTER SET/COLLATE válida para o português (e que provavelmente tb é limitada a 84 caracteres), já foi testado que a melhor combinação é realmente usar CHARACTER SET WIN1252 e COLLATE PXW_INTL850


Responder

Gostei + 0

20/02/2005

Afarias

Eu não diria que WIN1252/PXW_INTL850 é a *melhor* combinação -- eu prefiro ISO8859_1/PT_PT e uso com muito ´sucesso´ -- ambas acredito se adequam bem ao Brasil.

Mas, tratando do problema (que persiste ainda com ISO8859_1/PT_PT) as soluções são 2 basicamente:

1- definir apenas o charset na coluna, e não o collate. o collate pode ser indicado na hora de fazer um order by por exemplo, nestes casos vc tem ai um limite de acretido 240 chars.

2- criar campos de busca pequenos (seguindo o limite de 84 chars) visto q, não faz sentido de qualquer forma, ter campos de busca maiores q isso.


T+


Responder

Gostei + 0

20/02/2005

Gandalf.nho

É que tem um teste no site da Firebase mostrando que a combinação ISO8859_1/PT_PT tem alguns problemas com espaços na hora de ordenar. Por isso que falei que a outra é melhor.


Responder

Gostei + 0

20/02/2005

Afarias

Eu entendo, mas note q isto é uma questão de perspectiva...


...enquanto o autor do artigo viu um ´problema´ com o espaço, eu vi um problema com o fato de letras acentuadas estarem na frente de letras sem acento, e mais ainda, no fato de não haver ao q parece precendência de minúsculas sobre maiúsculas... acho isso um ´problema´

:D


T+


Responder

Gostei + 0

24/02/2005

Cabelo

Galera..

por favor estou com problemas exatamente sobre isso..

Tenho uma PK que deve conter 6 campos..

aí dá este mesmo erro..

como faço pra resolver.. sabendo que a soma dos campos é de 75 chars

agradeço antecipadamente..


Responder

Gostei + 0

24/02/2005

Afarias

Eu diria:

Melhore seu modelo de dados. Uma PK com 6 campos demonstra uma poble modeladem.


bom, mas...

veja q o tamanho do campo varchar é de 1byte por caracter (pelo menos, mas depende do char set e collate, isso pode ser bem maior) + 2 bytes.

se vc está usando campos varchar para conter apenas números (códigos numéricos) poderia mudar esses campos para INTEGER.

vc pode tb criar os campos com o char set mas não definir o COLLATE ... isso reduz muito o tamanho necessário para a construção da chave.


T+


Responder

Gostei + 0

24/02/2005

Cabelo

Não entendi o problema na modelagem..

esta é uma tabela que armazena somente os códigos de 6 outras tabelas.. por isso tenho que limitar o usuário a não inserir um registro duplicado.. por isso as 6 chaves..

Eu não uso campos varchar.. uso campos char.. e não é numérico.. são campos char.. com o código string..

dentre esses tem um campo Date..

se eu tirar o Collate, como farei para usá-lo novamente..?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar