Para usar MySQL con PHP vamos a usar las siguientes herramientas:

phpMyAdmin

phpmyadmin.png



mysqlworkbench

mysqlworkbench.gif


Sirve para hacer diagramas entidad-relación y hacerlo portable

Funcionalidades
  • SQL Development: permite conectarse a servidores de Bases de Datos y ejecutar queries de SQL
  • DataModeling: permite realizar modelos de los esquemas de las bases de datos, modificar tablas y sincronizar con bases de datos reales.
  • Server Administration: para crear y administrar instancias de bases de datos.

Pasos para Crear un Modelo
  • Create new EER model (que se corresponderá con la base de datos)
    • renombrarlo (de mydb) o crear uno nuevo ('+' en Physical Schemata)
    • cambiarle el collation a utf-8 bin
  • Add table
    • cambiar nombre
    • añadirle columnas
      • para la clave primaria (INT) indicarle
        • PK = primary key
        • NN = not null
        • AI = autoincremental
      • para el resto, opcionalmente
        • NN = not null
        • UQ = Unique
  • Modelo: menu > model > create diagram from catalog objects
    • el diagrama aparecerá en la pestaña EER
    • en este diagrama es posible hacer relaciones entre tablas
  • Guardarlo: menu > file > save
    • en la carpeta docs del proyecto.

Pasos para sincronizarlo con una base de Datos
  • Menu > Database > Manage connections > new
    • usuario: root
    • contraseña: en blanco
    • test Connection
    • close
  • Sincronizar Modelo >> Base de Datos
    • menu > database > forward engineer to database
      • Ejecutar el wizzard: ello creará la base de datos (si no existe) y sincronizará las tablas.
  • Sincronizar BBDD >> Modelo
    • menu > database > reverse engineer from database

Comprobaciones
  • En SQL Development > doble click a localhost (o el nombre del servidor de base de datos) > se abrirá la linea de comandos SQL
    • show databases;
    • USE project2db;
    • SHOW TABLES;
    • select * from usuarios;

Añadir datos en la tabla
  • SQL Development > Edit Table Data
    • Escoger servidor, Base de datos y Tabla
    • Rellenar tabla
    • Icono 'apply changes to database?
      • ello genera un script
      • 'apply' >> se ejecuta el script directamente en la base de datos


heidisql

heidisql_logo.png
Es un frontend de mysql como mysqladmin, pero mejorado
  • descargarlo de http://www.heidisql.com/
    • HeidiSQL_5.1_Portable.zip
    • Ponerlo en el escritorio
  • Ejecutar heidisql.exe
    • Indicar 'localhost'



Reiniciar MySQL de Zend Server

  • por si hay error al insertar un registro autoincremental, ya que el modo estricto no deja
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'uid' at row 1' in C:\Archivos de programa\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Statement\Pdo.php:228 Stack trace: #0
  • modificar C:\Archivos de programa\Zend\MySQL51\my.ini
    • cambiar
      # Set the SQL mode to strict
      #sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
       sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
  • reiniciamos el servicio mysql: Panel de Control > Herramientas administrativas > Servicios > MySQL_ZendServer51 > reiniciar



Exportar la Base de datos


Desde phpMyAdmin

php1.png

Se genera un archivo de texto plano, que crea todo excepto la base de datos. Ojo, que si es muy grande, no se puede abrir.

Opciones
  • Añadir DROP TABLE: si ya existe la tabla al importala y la queremos machacar.

Copia de tablas myISAM
Si la tabla es myISAM no es transaccional, vamos a ver su estructuta en ficheros físicos en el repositorio de datos
C:\Archivos de programa\Zend\MySQL51\data\proyecto1
Hay tres extensiones de fichero para cada tabla
  • MYI: estructura + datos + indices
  • frm
  • MYD
Puedo copiar estos tres ficheros a otro servidor y funciona.

Dump desde MySqlWorkBench
  • Server Administration > DataDump
  • Genera un archivo binario, por lo que solo puedo recuperarlo con esta herramienta.
  • Tanto para transaccionales como no. Hace un commit en un momento determinado.
  • Ojo: no copia ni vistas ni procedimientos, que se guardan en otro sitio.
    • hay unos checkbox para ello
  • MySqlDump es lo mismo desde consola

wbdump.png