[PHP] MySQL ? DB2

0

Witam,

musze przerzucic tabele z MySQL do DB2. Nigdy wczesniej tego robilem i jedyne co mi przyszlo do glowy, to eksport tej tabeli z phpMyAdmin z kompatybilnoscia eksportu SQL ustawiona na DB2, a nastepnie dodanie jej za pomoca PHP (z manualem pod pacha...). Kod wyglada nastepujaco:

// Lacze sie z baza danych
$conn = db2_connect($dbname, $dbuname, $dbpass);

// Skladam zpaytanie
$sql = "CREATE TABLE roczniki (
        ro_id int(4) NOT NULL default '0',
        ro_zamkniety char(1) NOT NULL default '',
        ro_redaktor varchar(255) NOT NULL default '',
        ro_dedykacja text NOT NULL,
        ro_il_autorow int(6) NOT NULL default '0',
        ro_il_zapisow int(7) NOT NULL default '0',
        ro_il_dzialow int(6) NOT NULL default '0',
        ro_il_wydawnictw int(6) NOT NULL default '0',
        PRIMARY KEY  (ro_id));";

// Przygotowuje je i wykonuje
$stmt = db2_prepare($conn, $sql);
$result = db2_execute($stmt);

Niestety nic z tego...

PHP wyrzuca:

Warning: db2_execute() [function.db2-execute]: Statement Execute Failed ...

a funkcja db2_stmt_errormsg() zwraca dodatkowo:

[IBM][CLI Driver][DB2/LINUX] SQL0104N An unexpected token "int" was
found following "ROCZNIKI ( ro_id". Expected tokens may include:
"CHARACTER". SQLSTATE=42601

Nie wiem juz jak powinno wygladac zapytanie skoro jest problem z tokenem "int" (?) [glowa]

Pomozecie? ;-)

0

CREATE TABLE roczniki (
        ro_id integer NOT NULL with default '0',
        ro_zamkniety character(00001) NOT NULL with default '',
        ro_redaktor varchar(00255) NOT NULL with default '',
        ro_dedykacja text NOT NULL,
        ro_il_autorow integer NOT NULL with default '0',
        ro_il_zapisow integer NOT NULL with default '0',
        ro_il_dzialow integer NOT NULL with default '0',
        ro_il_wydawnictw integer NOT NULL with default '0',
        PRIMARY KEY  (ro_id));"

teraz powinło być ok

0

Noo, dzieki. Tamtego bledu juz nie ma, ale jest inny:

prep error:

42704

prep errormsg:

[IBM][CLI Driver][DB2/LINUX] SQL0204N "TEXT" is an undefined name. SQLSTATE=42704

Czy to znaczy, ze DB2 nie obsluguje rowniez typu danych "text"?
Nazywa sie on jakos inaczej tak, jak w przypadku int (mysql) -> integer (db2) ?

0

rzeczywiście przegapiłem to w zapytaniu. ;)

db2 nie obsługuje zmiennej typu text.

skorzystaj z typu blob tu masz linkę http://www.ispirer.com/doc/sqlways38/Output/SQLWays-1-095.html

0

Dzieki, bardzo mi pomogles [browar]

A jeszcze jeden PS do powyzszego problemu...
... Czy jest lepszy/szybszy sposob na przekopiowanie bazy danych z mySQL do DB2?

1 użytkowników online, w tym zalogowanych: 0, gości: 1