mysqldump производит вывод, но phpmyadmin не импортирует его?

0

Я написал сценарий PHP, чтобы сбрасывать мою базу данных, используя следующее:

system("mysqldump -h".$dbservername." -u".$dbusername." -p".$dbpassword." ".$dbname." > backup.sql");
readfile("backup.sql");

Это отлично работает, и мой код клиента Java

                final String output = doPost("mydomain/getdb.php");

                try (PrintWriter out = new PrintWriter("/home/user/desktop/backup.sql")) {
                    out.println(output);
                    out.close();
                }
                catch(Exception e)
                {
                    // do something...
                }

работает отлично. Результат выглядит так, как я ожидал, например

-- MySQL dump 10.13  Distrib 5.6.39, for Linux (x86_64)---- Host: localhost    Database: mydomain_mydb-- -------------------------------------------------------- Server version    5.6.39-cll-lve/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8 */;/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;/*!40103 SET TIME_ZONE='+00:00' */;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;---- Table structure for table 'Projects'--DROP TABLE IF EXISTS 'Projects';/*!40101 SET @saved_cs_client     = @@character_set_client */;/*!40101 SET character_set_client = utf8 */;CREATE TABLE 'Projects' (  'jobno' int(11) NOT NULL AUTO_INCREMENT,  'state' int(11) NOT NULL, ... etc ...

(хотя все это на одной строке, а не красиво отформатировано в строки)

В любом случае, когда я попытаюсь импортировать этот .sql файл обратно в PHPMyAdmin, в недавно созданной новой базе данных (без таблиц и т.д.), Он работает без ошибок, но не добавляет никаких таблиц или данных. Я получаю зеленый (как ни в чем не получилось) сообщение:

Импорт успешно завершен, выполнено 1 запрос. (Backup.sql)

а также

MySQL возвратил пустой набор результатов (то есть нулевые строки). (Запрос занял 0.0005 секунд.)

Какие-нибудь идеи, что может быть неправильным?

PS по какой-то причине я не могу добавить тег mysqldump...

Теги:
phpmyadmin

1 ответ

0
Лучший ответ

Теперь я знаю, что случилось. Я просто попытался импортировать backup.sql прямо с моего сервера, и это работает нормально.

Проблема заключается в том, что мой клиент получает данные как одну строку без возврата каретки.

Следующий клиентский код загрузки работает:

        BufferedReader buffer = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        Writer writer = new OutputStreamWriter(new FileOutputStream(new File(filename)));

        int c;

        while ((c = buffer.read()) != -1) {
            writer.write((char) c);
        }

        writer.close();
        buffer.close();
        conn.disconnect();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню