Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> update bazy zmiana typu pola z tinyblob na varchar, jak wybrać tabele z polami typu tinyblob
Dafidov
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.07.2005
Skąd: Śląsk Bytom

Ostrzeżenie: (0%)
-----


Witam.
Szukałem szukałem i nie znalazłem.
Mam za zadanie zmienic w bazie pola w tabelach z typu tinyblob na varchar, niestety nie udało mi sie nigdzie znalesc informacji czy da sie z bazy danych wybrac tabele zawierajace konkretny typ pola (w moim przypadku tinyblob) oczywiscie bez utraty danych zapisanych w tych polach (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .
Czy ma ktos wiedze na ten temat - czy mozna - i jesli tak to jakim zapytaniem - wybrac z bazy danych tabele z kolumnami konkretnego typu?
Jesli da sie to zrobic to jak najprosciej zapytaniem sql-owm dokonac takiej zmiany?
Z gory dziekuje za pomoc.
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


można, jeżeli masz uprawnienia do odczytu bazy `information_schema` :
  1. SELECT `TABLE_SCHEMA`, `TABLE_NAME`, `COLUMN_NAME` FROM `information_schema`.`COLUMNS` WHERE `DATA_TYPE` = 'tinyblob';

powodzenia
Go to the top of the page
+Quote Post
Dafidov
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.07.2005
Skąd: Śląsk Bytom

Ostrzeżenie: (0%)
-----


Dzieki smiga (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jak bys mogl to powiedz mi jeszcze tylko jak teraz przejechac po liscie otrzymanych tabel zeby zmienic im typ pola na varchar?
Chyba powinno to byc cos takiego:
  1. ALTER TABLE `TABLE_SCHEMA`, `TABLE_NAME`, `COLUMN_NAME` CHANGE `information_schema`.`COLUMNS` `information_schema`.`COLUMNS` varchar NOT NULL;

Ale nie wiem jak przeleciec przez znalezione rekordy i czy na pewno w ten sposob uda sie dokonac zmiany typow pol....
Z gory dzieki za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nevt
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


nawet tego nie próbuj w ten sposób bo rozsypiesz sobie baze danych... nie możesz zmieniać tabel w information_schema. wyniki tego zapytania, co ci podalem, pobierasz w PHP i pakujesz do tablicy, a potem w pętelce robisz ALTER TABLE, dla poszczegónych baz/tabel/pól - poćwicz trochę sam- gotowca nie chce mi sie pisać ...
Go to the top of the page
+Quote Post
Dafidov
post
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.07.2005
Skąd: Śląsk Bytom

Ostrzeżenie: (0%)
-----


Dzieki - powalcze sam i zobacze czy uda mi sie przez to przegryzc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jak bede mial klopoty to mam nadzieje ze bede mogl jeszcze liczyc na jakas ewentulana pomoc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Pozdrawiam

Na poczatku myslalem zeby napisac procedurke ktora zmienie wymagane pola ale skonczylo sie na prostrzej wersji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Ponizszy kod wygenerowal mi zapytanka ktore wkleilem do pliku i z pliku wrzucilem do bazki gdzie dokonaly sie zmiany.
  1. SELECT CONCAT('ALTER TABLE `',`TABLE_NAME`,'` MODIFY `',`COLUMN_NAME` , '` varchar(255) ' ,CASE `IS_NULLABLE` WHEN 'NO' THEN 'NOT NULL' ELSE 'NULL' END), `COLUMN_DEFAULT` FROM `information_schema`.`COLUMNS` WHERE `DATA_TYPE` = 'tinyblob';

i podobnie dla pol typu blob zamienione na typ text.

Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:25