[Yii Framework] How to Restore MySql Database

Berikut step-step melakukan restore SQL pada Mysql database:

  • Download sebuah class untuk restore mysql database disini.
  • Setelah itu, extract hasil downloadan tadi ke folder “protected/extensions/” simpan class ny di dalam folder misal “rest”. Jadi akan ada file “mysql_restore.class.php” di folder “protected/extensions/rest”
  • Lalu kita mulai coding…
Buatlah sebuah model dengan nama “Rst” misal, lalu masukkan code berikut:
<?php
class Rst extends CFormModel
{
	public $filee;
	public function rules()
	{
		return array(
			array('filee', 'required'),
			array('filee', 'file','types'=>'sql','message'=>'File Harus Format .sql'),
		);
	}

	public function attributeLabels()
	{
		return array(
			'filee'=>'Cari File',
		);
	}
}

Model di atas kita buat untuk mendefinisikan form yang akan di tampilkan beserta validasi nya. Di atas saya mendefinisikan attribut “filee” dimana attribute tersebut merupakan sebuah attribute yang bisa menangkap sebuah file. Dimana file yang di upload harulah memiliki extensi  “.sql”.

Lalu buat sebuah controller dengan nama “RstController.php” misal. Dan isi code berikut:

<?php
Yii::import('application.extensions.*');
require_once('rest/mysql_restore.class.php');
class RstController extends Controller
{
	public function filters()
	{
		return array(
			'accessControl',
		);
	}
	
	public function accessRules()
	{
		return array(
			array('allow',
				'actions'=>array('restore'),
				'users'=>array('*'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}
	
	
	public  function actionRestore()
	{
		$model=new Rst;
		
		if(isset($_POST['Rst']))
		{
			$model->attributes=$_POST['Rst'];
			$models=CUploadedFile::getInstance($model,'filee');
			
			$path='/../12345.sql';
			$models->saveAs($path);
				
			$restore_obj = new MySQL_Restore();
			$restore_obj->server = 'localhost';
			$restore_obj->username = 'root';
			$restore_obj->password = '';
			$restore_obj->database = 'shp0';
			
			if (!$restore_obj->Execute( $path,MSR_FILE,true, false))
			{
  				die($restore_obj->error);
			}
			unlink($path);
			
  			$cs = Yii::app()->clientScript;
  			$cs->registerScript('my_script', 'if(confirm("Data Sukses Disimpan di Database!"))
  			window.location.href="index.php";
  			', CClientScript::POS_READY);
			
		}
		$this->render('rst',array(
			'model'=>$model,
		));
	}
}

Penjelasan : Code di atas akan mengupload sebuah file yang telah kita pilih, lalu program akan membaca file tersebut.  Pada code di atas juga  kita akan mengeset informasi database yang akan kita restore. Bisa anda lihat disana ada informasi “server”,”username”,”password”, dan “database”. Yah, jelas anda harus menyesuaikan code tersebut dengan code anda😀.. Setelah itu program akan membaca file yang sudah dipilih untuk me restore sesuai database yang kita miliki. Setelah semua data sudah di restore, program akan menghapus kembali file yang sudah di upload tadi…

 

Kemudian pada view, buat sebuah file view “rst.php” misal, dan isi dengan code berikut:

<?php
$this->breadcrumbs=array(
	'Upload Data',
);
?>
<h1>Upload Data Anda</h1>
<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'tinstrument-form',
	'enableAjaxValidation'=>false,
        'htmlOptions'=>array('enctype'=>'multipart/form-data'),
)); ?>

	<?php echo $form->errorSummary($model); ?>

	<div class="row">
		<?php echo $form->labelEx($model,'filee'); ?>
		<?php echo $form->fileField($model,'filee',array('size'=>60,'maxlength'=>255)); ?>
		<?php echo $form->error($model,'filee'); ?>
	</div>

	<div class="row buttons">
		<?php echo CHtml::submitButton('Save'); ?>
	</div>
<?php $this->endWidget(); ?>
</div>

Lalu jalankan program anda pada http://localhost/namaProject/index.php?r=rst/restore. Lalu pilih file SQL yang ingin anda restore..

Jika code anda sudah benar, maka program akan merestore database anda..

Selesai… Selamat mencoba..

Semoga membantu…😀

13 Responses to [Yii Framework] How to Restore MySql Database

  1. dbormamora says:

    kalo yg buat postgre, Bit?

  2. sabitzhabit says:

    ntar kalo udah bisa ku post bor.., cz laptopku postgre ny kacau.. jadi ga bisa testing…

  3. black says:

    untuk backupnya juga sama seperti ini gan? ato harus donlot phpclass lagi?

  4. sabitzhabit says:

    saya belum prnah coba kalo back up ny gan, ntar deh.. kalo bisa ane posting ntar..

  5. mrkoeh says:

    gan,
    aku udah ngikutin tutorial di atas, pas dijalanin jg udah berhasil, cm pas diliat kok DBny gak ada yah??
    mohon pencerahannya gan. . hehe

  6. mksd ny DB yang mana yang ga ada mas?

  7. mrkoeh says:

    gan,
    mksud dari :

    $path=’/../12345.sql’;
    $models->saveAs($path);

    ap yah??hehehe. .

  8. itu maksudnya kita simpen sementara file sql yang di upload ke server nya gan..

  9. mrkoeh says:

    gan,
    kok pas kita ngsave keluar error gni yah??

    Fatal error: Call to a member function saveAs() on a non-object in D:\xampp\htdocs\iMhere\protected\controllers\RestoreController.php on line 38

    pdhal udah ngikutin tutorial punya agan,dengan sedikit perubahan,hehhe . .

  10. yang agan saveAs itu harus file yang udah di tangkep tadi gan.. kyak nya agan saveAs nya salah..

  11. mrkoeh says:

    gan,
    klo kita ingin melakukan restore otomatis gmna gan??
    jdi kita udah ada file data.sql di folder, lha gmna caranya kita bisa restore data.sql scara otomatis tanpa lewat form. .

    tolong pencerahannya gan. .
    terimakasih.

  12. coba cari tahu tentang cron gan..

  13. coba cari tahu tentang “cron” gan..

    Kunjungi Juga Farifam.com untuk tutorial dan forum Yii Framework yang lebih lengkap dan direspon lebih cepat dari di blog ini..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: