Yorumladı hatları çok sonuç Mysqldump, hiçbir gerçek içeriği

1 Cevap php

Ben otomatik olarak sunucu üzerinde sql dosyaları olarak MySQL tablo yedeklerini oluşturulan bir PHP programı yazmaya çalışıyorum:


$backup = "$path/$tablename.sql";
$table = "mydbname.mytablename";

exec(
  sprintf(
    '/usr/bin/mysqldump --host=%s --user=%s --password=%s %s --quick --lock-tables --add-drop-table > %s',
    $host,
    $user,
    $password,
    $table,
    $backup
  )
);

. Ben sonuçta sql dosyası olsun hepsi bu:

-- MySQL dump 10.10
--
-- Host: localhost    Database: mydbname.mytablename
-- ------------------------------------------------------
-- Server version   5.0.27

/*!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 */;

Bu balık görünüyor sonuçları listesi Veritabanı ki: mydbname.mytablename.

Ben nereden aramaya başlamak için bilmiyorum. Benim ev sahibi, benim ilk program kurmak yardımcı, (Ben bu ne demek bilmiyorum) (zaten yapıldı) safe_mode devre dışı bırakmanız gerekir ve ikili erişim vereceğini söyledi.

Konak ben bir soru sormak her zaman cevap vermek için iki gün sürer bu yana, ben mümkünse kendimi bu gidermek istiyorum.

1 Cevap

Siz komutu mysqldump bu gibi:

/usr/bin/mysqldump --host=HOST --user=USER --password=PASSWORD TABLE --quick --lock-tables --add-drop-table

the manual of mysqldump baktığımızda, ben o TABLO aslında veritabanı ismi olduğunu düşünüyorum olacağını söyleyebilirim (quoting):

There are three general ways to invoke mysqldump:

shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] --databases db_name1 [db_name2 db_name3...]
shell> mysqldump [options] --all-databases

Görünüşe göre, size dökümü istediğiniz tablonun adından önce veritabanının adını koymak zorunda.

Yani, örneğin, böyle bir şey hile yapabilir:

/usr/bin/mysqldump --host=HOST --user=USER --password=PASSWORD DBNAME TABLE --quick --lock-tables --add-drop-table


Hope this helps !


EDIT : I actually made a quick test, using "databasename.tablename", like you did :

mysqldump --user=USER --password=PASSWORD --no-data DBNAME.TABLENAME

Sana sahip çıktı aynı tür alıyorum ... Ama ben de bir hata var:

mysqldump: Got error: 1102: Incorrect database name 'DBNAME.TABLENAME' when selecting the database

Ben tahmin ediyorum ki, hata çıkışı oluyor, değil standart çıktı (you are only redirecting that second one to your file)

Ben kullanıyorum eğer:

mysqldump --user=USER --password=PASSWORD --no-data DBNAME TABLENAME

Hiçbir hata ve ben dökümü var: Herşey Tamam çalışır.