Durante mucho tiempo tuve el gran problema que al reiniciar mi servidor apache (sea cual sea la causa) no me cargaba el módulo de php, lo que hacía era:
#> apachectl restart
Y con eso efectivamente reiniciaba el serivdor web pero si entraba a alguna página php me daba opción para descargarla en vez de mostrarmela, después de sufrir esto por unos días encontre que lo que tenía que reiniciar era directamente el demonio y esto se hace (en Mandriva 2008):
#> /etc/rc.d/init.d/httpd restart
De esta forma se carga el servidor COMO DEBE SER.
miércoles, 11 de junio de 2008
jueves, 5 de junio de 2008
Como hacer a MySQL "NOT case sensitive"
Estaba probando unos queries SQL, previamente definidos en Windows por mi profesor, que están elaborados con mayúsculas y minúsculas sin importar el nombre de las tablas definidos en mi base de datos. Algo como esto:
SELECT CONCAT(Customers.CustLastName, ', ', Customers.CustFirstName) AS MailingName, Customers.CustStreetAddress, Customers.CustCity, Customers.CustState, Customers.CustZipCode FROM Customers UNION SELECT Vendors.VendName, Vendors.VendStreetAddress, Vendors.VendCity, Vendors.VendState, Vendors.VendZipCode FROM Vendors
Las letras marcadas en rojo representan una tabla en mi BD que esta definida en minúsculas.
Como ya llevo algunos meses intentando olvidar Windows lo estaba probando en Linux (Mandriva 2008.1) me di cuenta que no funcionaban y phpmyadmin siempre me regresaba un error de que la tabla no existía, algo como esto:
Después de estar leyendo un poco sobre las variables de MySQL concluí en varias cosas:
0 - Los nombres de tablas y bases de datos se almacenan tal cual se hayan definido por el usuario en las sentencias CREATE DATABASE ó CREATE TABLE. Este valor es el predefinido para un sistema "case sensitive" como es Linux. Si este valor se asigna a un sistema "non-case sensitive" como Windows puedo producir serios errores en los índices.
1 - Valor predeterminado para sistemas Windows y MacOS. MySQL se encarga de convertir a minúsculas todos los nombres de tablas, tanto para almacenamiento como para búsqueda.
2 - Se almacenan tal cual se hayan definido por el usuario en las sentencias CREATE DATABASE ó CREATE TABLE. Al momento de realizar una búsqueda MySQL convierte todo a mínúsculas.
En mi caso la solución fue simplemente:
--lower_case_table_names = 1
¿Como modificar el valor de la variable lower_case_table_names?
Los siguientes pasos se deben realizar con permisos suficientes, en mi caso fue directamente con root.
** No entiendo porque el procedmiento no es igual para lower_case_file_system pero al probarlo y modificar la variable a ON (ó 1) MySQL no reinicia por un problema de que no reconce la variable, si alguien sabe algo al respecto, por favor comenten!
SELECT CONCAT(Customers.CustLastName, ', ', Customers.CustFirstName) AS MailingName, Customers.CustStreetAddress, Customers.CustCity, Customers.CustState, Customers.CustZipCode FROM Customers UNION SELECT Vendors.VendName, Vendors.VendStreetAddress, Vendors.VendCity, Vendors.VendState, Vendors.VendZipCode FROM Vendors
Las letras marcadas en rojo representan una tabla en mi BD que esta definida en minúsculas.
Como ya llevo algunos meses intentando olvidar Windows lo estaba probando en Linux (Mandriva 2008.1) me di cuenta que no funcionaban y phpmyadmin siempre me regresaba un error de que la tabla no existía, algo como esto:
Después de estar leyendo un poco sobre las variables de MySQL concluí en varias cosas:
- No esta nada bien crear queries utilizando MayÚsCulas y minúsculas y mucho menos los nombre de las tablas, es ampliamente recomendable que estas se definan únicamente en minúsculas.
- Existen dos variables importantes en MySQL para permitir/restringir el uso de nombres con mayúsculas/minúsculas, estas son:
- lower_case_file_system
- lower_case_table_names
0 - Los nombres de tablas y bases de datos se almacenan tal cual se hayan definido por el usuario en las sentencias CREATE DATABASE ó CREATE TABLE. Este valor es el predefinido para un sistema "case sensitive" como es Linux. Si este valor se asigna a un sistema "non-case sensitive" como Windows puedo producir serios errores en los índices.
1 - Valor predeterminado para sistemas Windows y MacOS. MySQL se encarga de convertir a minúsculas todos los nombres de tablas, tanto para almacenamiento como para búsqueda.
2 - Se almacenan tal cual se hayan definido por el usuario en las sentencias CREATE DATABASE ó CREATE TABLE. Al momento de realizar una búsqueda MySQL convierte todo a mínúsculas.
En mi caso la solución fue simplemente:
--lower_case_table_names = 1
¿Como modificar el valor de la variable lower_case_table_names?
Los siguientes pasos se deben realizar con permisos suficientes, en mi caso fue directamente con root.
- Como la variable lower_case_table_names no es dinámica, no puede modificarse mientras MySQL esta funcionando por que debemos parar el servicio mysqld
- $root>/sbin/service mysqld stop
- Después vamos al archivo my.cnf que en Mandriva 2008.1 está en /etc
- $root>vi /etc/my.cnf
- En este archivo vamos a la sección [mysqld] y agregamos
- lower_case_table_names = 1
- Guardamos el archivo y reiniciamos MySQL:
:wq - /sbin/service mysqld start
** No entiendo porque el procedmiento no es igual para lower_case_file_system pero al probarlo y modificar la variable a ON (ó 1) MySQL no reinicia por un problema de que no reconce la variable, si alguien sabe algo al respecto, por favor comenten!
Suscribirse a:
Entradas (Atom)