Posted by Kelvin on Jul 25, 2009 in
MySQL

Logo MySQL
Estaba intentando hacer una relacion (unos a muchos 1-M) en una base de datos en MySQL ya existente y recibia este error: #1005 - Can't create table 'table_name.#sql-344_126' (errno: 121)
La razon es que tenia varios asuntos sin resolver:
El campo a ser utilizado en la relacion tiene que ser llave primaria o indice (primary key or index).
Ambas tablas tienen que ser Engine InnoDB, para modificar una tabla existente puedes utilizar el siguente commando:
SQL:
-
ALTER TABLE 'table_name' ENGINE = InnoDB;
Para alterar una tabla ya existente, creando asi la relacion:
SQL:
-
ALTER TABLE usuarios
-
ADD CONSTRAINT country_id
-
FOREIGN KEY (country_id)
-
REFERENCES countries (country_id)
-
ON DELETE CASCADE ON UPDATE CASCADE
Pueden conseguir mas informacion en este blog: MySQL Error Number 1005 Can’t create table ‘.\mydb\#sql-328_45.frm’ (errno: 150)
Tags: Error, MySQL, relaciones, SQL, tutorial
Posted by Kelvin on Jul 24, 2009 in
PHP
Actualmente estoy trabajando en un proyecto en donde tengo que realizar una pagina Intranet. Como parte del mismo tengo que copiar el nombre y el directorio de unos archivos que estan alojados en el servidor. Hay es cuando interviene PHP, con el cual he creado un "script" que al momento de correrlo se conecta a una base de datos en MySQL y envia el nombre y directorio de los archivos. El mismo hay que correrlo de forma manual, pero se podría implementar para que corra automaticamente cada minuto, hora o dia. Asimismo, una vez la informacion esta en la base de datos se puede crear un buscador con PHP en donde el usuario pueda buscar los archivos y descargarlos.
Ejemplo:
C:\documentos\midocumento.doc
Se enviara a la base de datos: midocumento.doc y el directorio C:\documentos\midocumento.doc
* El mismo funciona con el backslash '\' de Windows, si vas a utilizar Linux debes modificar el codigo.
CODE:
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-
-
"http://www.w3.org/TR/html4/loose.dtd">
-
-
<html>
-
-
<head>
-
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-
-
<title>Untitled Document</title>
-
-
</head>
-
-
<body>
-
-
<?php
-
-
$it = new RecursiveDirectoryIterator('./');
-
-
// database
-
-
$dbhost = 'localhost';
-
-
$dbuser = 'root';
-
-
$dbpass = 'password';
-
-
// connecting to database
-
-
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to MySQL');
-
-
$dbname = 'direc_files';
-
-
mysql_select_db($dbname,$conn);
-
-
// RecursiveIteratorIterator accepts the following modes:
-
-
// LEAVES_ONLY = 0 (default)
-
-
// SELF_FIRST = 1
-
-
// CHILD_FIRST = 2
-
-
foreach (new RecursiveIteratorIterator($it, 2) as $path)
-
-
{ // foreach began
-
-
if ($path != '.' && $path != '..')
-
-
{ // if began
-
-
if ( !is_dir($path) ) // tells whether the given filename is a directory
-
-
{ // if began
-
-
//echo basename($path); // display directory name
-
-
$insert = basename($path);
-
-
echo "<p>$insert</p>";
-
-
echo "\n"; // new line
-
-
// echo "<p>$path</p>";
-
-
echo "\n"; // new line
-
-
$path_trimmed = ltrim($path,'.');
-
-
echo "\n";
-
-
$dir_safe = mysql_real_escape_string($path_trimmed); // allow to enter escape character in a safe way
-
-
$dir_http = str_replace("\\\\", '/', $dir_safe); // replace '\' with '/'
-
-
echo "<strong>The directory : $dir_http </strong>";
-
-
mysql_query("INSERT INTO index_files (file_name, directory)
-
VALUES ('$insert','$dir_http')");
-
-
} // if end
-
-
} // if end
-
-
} // foreach end
-
-
//mysql_close($conn); // close mysql connection
-
-
?>
-
-
</body>
-
-
</html>
Tags: base de datos, copiar, copiar archivos, copiar directorio, css, directorios, html, MySQL, PHP, programacion, script, tutorial