Mostrando entradas con la etiqueta mysql. Mostrar todas las entradas
Mostrando entradas con la etiqueta mysql. Mostrar todas las entradas

domingo, 6 de mayo de 2012

Rails TypeError - can't convert false into String

He estado probando definir páginas estáticas en un proyecto rails. Había creado el proyecto y configurado para que utilizase una base de datos MySql. La base de datos contra la que trabajaba se llamaba "OFF". Al arrancar el servidor y realizar una petición a la página estática que había generado obtenía el inexplicable error: "TypeError can't convert false into String".
Mirando las trazas el error se producía en:
mysql2 (0.3.11) lib/mysql2/client.rb:44:in `connect'
Probé a configurar otra base de datos con otro nombre y funcionaba correctamente. Así que mi sospecha es que lo que pasaba es que "OFF" es palabra reservada, parece que de sql, que no se puede usar como nombre de base de datos (y seguramente tampoco como nombre de columna, tabla, modelo en rails,...). He encontrado ésta recopilación de palabras reservadas relacionadas con rails, que habrá que evitar usar como nombres personalizados en nuestras aplicaciones rails y elementos relacionados, para evitarnos dolores de cabeza.

viernes, 20 de abril de 2012

Instalar MySql Workbench en Ubuntu 11.10

Para instalar en ubuntu desktop 11.10 MySql Workbench, que es una muy buena herramienta visual de diseño de bases de datos que integra desarrollo de software, Administración de bases de datos, diseño de bases de datos, creacion y mantenimiento para el sistema de base de datos MySQL. Ejecutar los siguiente desde el terminal:

(Solución provisional hasta que lo cambie Oracle.)
sudo add-apt-repository ppa:olivier-berten/misc
sudo apt-get update
sudo apt-get install mysql-workbench-gpl

Flags en el editor de tabla de MySql Workbench

  • PK - Primary Key
  • NN - Not Null
  • BIN - Binary
  • UN - Unsigned
  • UQ - Unique Key
  • ZF - Zero-Filled
  • AI - Auto Incremenent

La longitud máxima de enlaces (URIs, URLs) en la práctica es - 2,083

Antes de nada, es:
2083
Tenía una duda, qué longitud de campo necesito en mi tabla de una base de datos mysql para poder almacenar cualquier URL(enlace).

Aunque en la especificación del protocolo HTTP no se especifica ninguna longitud máxima, los distintos navegadores y software de servidores imponen unos límites prácticos. El menor de los cuales, el del navegador Explorer, es 2083, sin que haya más de 2,048 caracteres formando el path. Curiosamente el límite manejado por el servidor Microsoft Internet Information Server es 16,384.

En éste caso, lo de Explorer no me parece una cagada, una longitud excesiva de enlaces normalmente es resultado de un mal diseño. La regla general es que en el enlace deberían ir los parámetros que son imprescindibles para regenerar el contenido de la página. La solución estándar para realizar una petición equivalente al envío de un formulario con muchos campos es usar el método POST en vez de GET y meter los parámetros en el cuerpo del mensaje.

Así que si estamos pensando en crear un campo en nuestra base de datos de MySql para guardar URLs, definiríamos uno como
VARCHAR(2083)
En realidad para el caso de mysql hay dos casos:
  1. si < MySQL 5.0.3 usar tipo de campo TEXT, porque VARCHAR estaba limitado a 255.
  2. si >= MySQL 5.0.3 usar tipo de campo VARCHAR(2083)
Sacado de aquí y aquí.