мне, не така ...
в интерес на истината, специално прочетох и пишеше така (не знаех обаче това дали е за 4 или 4.1):
"MySQL chooses the table character set and collation thus:
If both CHARACTER SET X and COLLATE Y were specified, then character set X and collation Y.
If CHARACTER SET X was specified without COLLATE, then character set X and its default collation.
Otherwise, the database character set and collation."
същото пишеше и за колоните, т.е. ако съдя по това, което каза, значи е за 4.1
другото, което съм го чел (сега просто го цитирам) е:
"If you change the character set when running MySQL (which may also change the sort order), you must run myisamchk -r -q --set-character-set=charset on all tables. Otherwise, your indexes may not be ordered correctly."
т.е. ако човек не се постарае да си оправи индексите, никой няма да му помогне ...тва ми беше мисълта ...
и хич не ми е очевидно, че ако сменя кодовата таблица на сървъра, да ми се окаже, че в уникален ключ
$x == $y
ако това е на клиента - да (никой не го задължава да е със същия character set), ама на сървъра - сори ...
а че при alter table се преиндексират индексите е ясно, то даже се прави допълнително копие на таблицата, сичко се прави върху него и после се преименува (пише, че ша го оправят, ама някой ден) - иначе наистина няма да изскочи грешката
всъщност частичното "решение" (ако може изобщо да е такова) на проблема, който посочих, го видях току що случайно в документацията :)
"IGNORE is a MySQL extension to SQL-92. It controls how ALTER TABLE works if there are duplicates on unique keys in the new table. If IGNORE isn't specified, the copy is aborted and rolled back. If IGNORE is specified, then for rows with duplicates on a unique key, only the first row is used; the others are deleted"
т.е. проблемът е леко "загатнат" като такъв ...
(трябва да съм много, ама много, сигурен какво правя, за да ползвам alter table ignore в този специален случай)
малко офтопик:
абе цялата интернационализация е една голяма боза и ще е така докато всички не вземат да ползват unicode (вярно размера на базата ще е по-голям, ама какво от това)
иначе винаги има разни "идиоти", дето ми създават (в случая оракълска) база с американски character set (обикновен ANSI) и после пишат вътре кирилица, а после тая кирилица от друг сървър, работещ си на нормално, примерно, UTF8 не мога и от гъза (извинявам се) да си я изкарам без да напиша конвертор, а това означавам да прекарам всяка божа колона, съдържаща кирилица, през него (става дума за сървър-сървър комуникация, тъй че не ми предлагайте решения, щото нема - потвърдили са ми го от металинк)
та така ... отде тръгнахме ... доде стигнахме
аре стига сме пили, аз ша хода да си лягам
|