Avatar billede secher_dk Nybegynder
15. juli 2008 - 19:35 Der er 22 kommentarer og
1 løsning

Flytning af database

Jeg skal flytte en database fra et websted til et andet.
Jeg har eksporteret databasen med myPhpAdmin, men det nye websted har ikke nogen database manager.. Så hvordan i alverden får jeg databasen sat op det nye sted?
Nogen programmer a'la et ftp program hvor jeg kan lave sql kald eksternt?

-Secher
Avatar billede fbisen Nybegynder
15. juli 2008 - 20:07 #1
Kan du ikke lave en php side, hvis du bruger php, til dette formål?
Avatar billede erikjacobsen Ekspert
15. juli 2008 - 22:36 #2
Eller du kan selv installere phpmyadmin, hvis det nye sted understøtter php.
Avatar billede pvogel Nybegynder
15. juli 2008 - 23:07 #3
Hvis stedet undstøtter php kan gemme denne stump som en .php-fil. Indsæt login-data for databasen, samt din SQL-kode i de første linjer, og så kør filen.


<?php

/*** Oploadning af MySQL-sekvens ***/
/******    af Peter Vogel    ******/

$sqlserver='localhost';                // sql-serveren. Typisk er dette 'localhost'
$sqluser='root';            // dit brugernavn
$sqlpassword='';            // dit password
$database='';                  // databasens navn

$query='CREATE TABLE test (a INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (a))';    // Her indsættes din ekspoterede SQL-tekst

$connect_id = mysql_connect($sqlserver, $sqluser, $sqlpassword);
if ($connect_id){
    mysql_select_db($database);
    $result = mysql_query($query, $connect_id);
   
    if ($result){
        $log = 'SQL-sekvensen er oploadet';
    } else {
        $log = 'SQL-sekvensen kunne IKKE oploades: <br/>';
        if(mysql_error() != ''){
            $log .= ' <b>MySQL Error</b>: '.mysql_error().'<br/>';
        }
    }
   
} else {

    $log = 'Programmet kunne ikke forbinde til databasen';
    if(mysql_error() != ''){
          $log .= ' <b>MySQL Error</b>: '.mysql_error().'<br/>';
    }
}

print $log;

?>
Avatar billede fbisen Nybegynder
15. juli 2008 - 23:10 #4
Kan man virkelig det på den måde?
Jeg troede at man kun kunne udføre én query pr. mysql_query.
Altså ville man kun kunne udføre én linje af gangen fra en backup.
Avatar billede pvogel Nybegynder
15. juli 2008 - 23:19 #5
fbisen> Du har nok ret. Jeg læste nok problemet som et tabel-problem. I så fald man man gentage proceduren for hver tabel.
Avatar billede fbisen Nybegynder
15. juli 2008 - 23:37 #6
pvogel> Tror du dette ville virke med mange query commands (separeret af ';')



<?php

/*** Oploadning af MySQL-sekvens ***/
/******    af Peter Vogel    ******/

$sqlserver='localhost';                // sql-serveren. Typisk er dette 'localhost'
$sqluser='root';            // dit brugernavn
$sqlpassword='';            // dit password
$database='';                  // databasens navn

$query=';;;';    // Her indsættes din ekspoterede SQL-tekst




$query = explode(';', $query);

$connect_id = mysql_connect($sqlserver, $sqluser, $sqlpassword);
if ($connect_id){
    for($i = 0; $i < count($query); $i++)
    {
    mysql_select_db($database);

    $result = mysql_query($query[$i], $connect_id);
 
    if ($result){
        $log = 'SQL-sekvensen er oploadet';
    } else {
        $log = 'SQL-sekvensen kunne IKKE oploades: <br/>';
        if(mysql_error() != ''){
            $log .= ' <b>MySQL Error</b>: '.mysql_error().'<br/>';
        }
    }
    }
 
} else {

    $log = 'Programmet kunne ikke forbinde til databasen';
    if(mysql_error() != ''){
          $log .= ' <b>MySQL Error</b>: '.mysql_error().'<br/>';
    }
}

print $log;
?>
Avatar billede pvogel Nybegynder
16. juli 2008 - 00:16 #7
Det virker faktisk! Altså:
- Adskil hver tabel i SQL-sekvensen med et ';'  ($query = 'CREATE... ; CREATE... ; CREATE...')
- lad 'explode' gøre $query til et array (query = explode(';', $query);)
Det var interessant!
Avatar billede secher_dk Nybegynder
16. juli 2008 - 17:44 #8
Tak for opmærksomheden folkens!
dvs det jeg gør er at uploade den php fil, og køre den ved bare at åbne den i en browser?
Avatar billede fbisen Nybegynder
16. juli 2008 - 17:48 #9
Sådan ville jeg gøre, ja.

Men slet filen igen bagefter, så den ikke kan blive udnyttet. Det er heller ikke sikkert at .php filen kan klare en query med kommentarer.
Men det finder du vel ud af? :P
Avatar billede secher_dk Nybegynder
16. juli 2008 - 18:04 #10
hmmm.. det ser ikke rigtig ude til at virke.. Filen ser nu sådan her ud:

<?php

/*** Oploadning af MySQL-sekvens ***/
/******    af Peter Vogel    ******/

$sqlserver='**********';                // sql-serveren. Typisk er dette 'localhost'
$sqluser='***********';            // dit brugernavn
$sqlpassword='*********';            // dit password
$database='********';                  // databasens navn

$query='-- phpMyAdmin SQL Dump
-- version 2.9.2-Debian-1.one.com1
-- http://www.phpmyadmin.net
--
-- Host: MySQL Server
-- Generation Time: Jun 23, 2008 at 01:49 PM
-- Server version: 5.0.32
-- PHP Version: 5.2.0-8+etch11
--
-- Database: `enfosownage_com`
--

-- --------------------------------------------------------

--
-- Table structure for table `cal`
--

CREATE TABLE `cal` (
  `id` int(9) NOT NULL auto_increment,
  `eventdate` date NOT NULL default '0000-00-00',
  `html` tinyint(1) NOT NULL default '0',
  `title` varchar(255) NOT NULL,
  `event` blob NOT NULL,
  UNIQUE KEY `date` (`eventdate`),
  UNIQUE KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

--
-- Dumping data for table `cal`
--


-- --------------------------------------------------------

--
-- Table structure for table `cs_abcode`
--

CREATE TABLE `cs_abcode` (
  `abcode_id` int(8) unsigned NOT NULL auto_increment,
  `abcode_func` varchar(8) NOT NULL default '',
  `abcode_pattern` varchar(40) NOT NULL default '',
  `abcode_result` varchar(40) NOT NULL default '',
  `abcode_file` varchar(80) NOT NULL default '',
  PRIMARY KEY  (`abcode_id`)
) TYPE=MyISAM  AUTO_INCREMENT=10 ;

--
-- Dumping data for table `cs_abcode`
--

INSERT INTO `cs_abcode` VALUES (1, 'img', ':)', '', 'smile.gif');
INSERT INTO `cs_abcode` VALUES (2, 'img', ';)', '', 'wink.gif');
INSERT INTO `cs_abcode` VALUES (3, 'img', ':D', '', 'biggrin.gif');
INSERT INTO `cs_abcode` VALUES (4, 'img', ':P', '', 'tongue.gif');
INSERT INTO `cs_abcode` VALUES (5, 'img', ':cool:', '', 'cool.gif');


.......... 10.000 linjer af lignende opsætning her....



  `userID` int(11) NOT NULL default '0',
  `nickname` varchar(255) NOT NULL default '',
  `site` varchar(255) NOT NULL default ''
) TYPE=MyISAM;

--
-- Dumping data for table `webs_whoisonline`
--

INSERT INTO `webs_whoisonline` VALUES (1209761806, '80.160.163.14', 0, '', '');

-- --------------------------------------------------------

--
-- Table structure for table `webs_whowasonline`
--

CREATE TABLE `webs_whowasonline` (
  `time` int(14) NOT NULL default '0',
  `ip` varchar(20) NOT NULL default '',
  `userID` int(11) NOT NULL default '0',
  `nickname` varchar(255) NOT NULL default '',
  `site` varchar(255) NOT NULL default ''
) TYPE=MyISAM;

--
-- Dumping data for table `webs_whowasonline`
--

';    // Her indsættes din ekspoterede SQL-tekst




$query = explode(';', $query);

$connect_id = mysql_connect($sqlserver, $sqluser, $sqlpassword);
if ($connect_id){
    for($i = 0; $i < count($query); $i++)
    {
    mysql_select_db($database);

    $result = mysql_query($query[$i], $connect_id);

    if ($result){
        $log = 'SQL-sekvensen er oploadet';
    } else {
        $log = 'SQL-sekvensen kunne IKKE oploades: <br/>';
        if(mysql_error() != ''){
            $log .= ' <b>MySQL Error</b>: '.mysql_error().'<br/>';
        }
    }
    }

} else {

    $log = 'Programmet kunne ikke forbinde til databasen';
    if(mysql_error() != ''){
          $log .= ' <b>MySQL Error</b>: '.mysql_error().'<br/>';
    }
}

print $log;
?>


Kan det være pga. alle "------"erne og kommentarer som ikke er kommenteret ud?
Jeg mener burde den ikke bare læse videre efter hver ";" til den finder et query?
Avatar billede fbisen Nybegynder
16. juli 2008 - 18:11 #11
Jeg ville tro den hoppede kommentarerne over, men er overhovedet ikke sikker.
Siden din backup ikke er videre stor, så kan det måske lade sig gøre at fjerne alt unødigt? Desuden må den allersidste ; ikke være der, da den så vil forsøge at udføre det der er efter ; (som jo er tomt)
Avatar billede secher_dk Nybegynder
16. juli 2008 - 18:26 #12
hehe, læs det igennem.. Jeg har redigeret 10.000 linjer ud.
Det ville nok tage et par dage at rense den for kommentarer...

Den sidste ";" er jo fra:
"$query=';;;'; <---  // Her indsættes din ekspoterede SQL-tekst", så skal den ikke være der alligevel?
Avatar billede fbisen Nybegynder
16. juli 2008 - 18:47 #13
Ahhhh. Så der er rigtig mange linjer :S
Hvad bliver der skrevet ud på siden? ($log)

Det jeg tænkte med at fjerne en af ; er:
$query = 'SELECT...; INSERT...; CREATE...';
Jeg har ingen på det sidste led. Men det er jo ikke det der ødelægger det.
Avatar billede secher_dk Nybegynder
16. juli 2008 - 20:15 #14
Der bliver ikke skrevet noget ud overhovedet.. Der kommer bare en helt hvid side..
Jeg har prøvet at fjerne det sidste ";" men det har ingen effekt.. :(
Lige nu sidder jeg og kæmper med at få phpmyadmin installeret.. Men det kan jeg heller ikke finde ud af.. Det her er simpelthen et helvede..
Jeg ved godt at det gør væk fra topic,  men har nogen af jer erfaring med at sætte det op? For jeg kan ikke rigtig gennemskue det..
Avatar billede fbisen Nybegynder
16. juli 2008 - 20:17 #15
Jeg har bare downloaded det, udpakket det, gået ind på /phpmyadmin og derpå skulle jeg opsætte et opsætningsscript.

Men spørgsmålet er om du kan det, uden root kodeord?
Avatar billede pvogel Nybegynder
16. juli 2008 - 20:20 #16
Din stakkel! Jeg har ikke erfaring med phpMyadmin-opsætning. Hvor mange tabeller er der i din database? For hvis der bare er 10 men med kommentarer imellem, så ville jeg nok vælge at rense den. Men hvis der er 400 ville jeg nok også vælge installation af phpMyadmin. Synes bare der må være én eller anden form for databaseadgangsprogram på dit websted. Med mindre det selvfølgelig er din egen server, du er ved at sætte op.
Avatar billede secher_dk Nybegynder
16. juli 2008 - 20:23 #17
Ja.. det gør knuder.. De eneste kodeord jeg har er til MySQL og til FTP.. Så kan jeg måske slet ikke sætte det op?
Avatar billede fbisen Nybegynder
16. juli 2008 - 20:48 #18
Jeg tror det ikke. Men er ikke sikker. Som pvogel skriver, er det så muligt at rense, eller er det helt umuligt?
Avatar billede secher_dk Nybegynder
16. juli 2008 - 20:55 #19
Jeg fik phpmyadmin til at virke nu.. Så nu ser det ud til at jeg klarer den :) Tusind tak for hjælpen.
Smid svar så jeg kan få spørgsmålet lukket :)
Avatar billede fbisen Nybegynder
16. juli 2008 - 21:43 #20
Det var da utroligt dejligt! Sikke en gang arbejde bare for at flytte noget data!
Men rigtig godt du fik det igennem!
Avatar billede secher_dk Nybegynder
16. juli 2008 - 21:45 #21
Ja det var et joomla-site der skulle flyttes.. Det tog næsten ligeså lang tid at flytte siden som det tog at lave den!
Dejligt det er overstået! Og tak for hjælpen!
Avatar billede fbisen Nybegynder
16. juli 2008 - 21:51 #22
Så lidt :) Det gik ikke for godt, men tak for point :)
Avatar billede pvogel Nybegynder
16. juli 2008 - 23:29 #23
Ja, godt det lykkedes. Så man kan godt smide phpMyadmin op bare med FTP og db-login-data? Det ville jeg mene, men var i tvivl som fbisen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester