mysqldump生成输出,但phpmyadmin不会导入它?

eit6fx6z  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(287)

我编写了一个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个查询(备份.sql)

mysql返回一个空的结果集(即零行)(查询耗时0.0005秒。)
有什么问题吗?
ps由于某些原因我不能添加 mysqldump 标记。。。

n9vozmp4

n9vozmp41#

我现在知道怎么了。我只是想导入 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();

相关问题