granito
-
Total de itens
15 -
Registro em
-
Última visita
Posts postados por granito
-
-
Alterei os TYPEs manualmente mesmo. Mas, por favor, não feche o tópico ainda, por que algo me diz que esse não é o único problema da query inicial.
EDIT: O problema continua ao tentar
SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, out, nov, dez, id, id AS kt_pk_alunos FROM alunos WHERE id = 3
WTF? EDIT 2: Continua só funcionando atéSELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, id, id AS kt_pk_alunos FROM alunos
EDIT 3: Tentei issoSELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, nov, dez, id, id AS kt_pk_alunos FROM alunos
e funcionou. A query está sem o campo 'out', o que me leva a crer que é ele que está causando o problema. A pergunta que segue: porquê?
-
Certo, funcionou até
SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, id FROM alunos
Arg! Já desconfiava que era culpa do cara que fez a tabela... :angry: Onde já se viu fazer uma table tão grande só com TEXT?!
Mas, enfim, há um comando eu possa usar para mudar o tipo das colunas de TEXT pra VARCHAR?
-
Alguma idéia?
-
As entradas de sua tabela não tem registro de data? Tendo um fórum, imagino que sim.
Se sim, o MySQL usa o padrão de data americano, então você pode usar esse código, ou algo parecido:
$mes = "mm"; $ano = "aaaa"; $dia = "dd"; $query = mysql_query("SELECT * FROM tabela WHERE data_coluna<'$ano-$mes-$dia'"); while($row==mysql_fetch_array($query)){ // aqui você passa os valores em $row[] para as strings, usando $utf8_decode() nos campos necessários, e então faz o UPDATE }
Mas só execute isso aí depois de ter desfeito issoSELECT CONVERT(meucampo USING utf8) FROM minhatabela;
, ou as coisas podem piorar.
Se não tiver registros de data, você pode ver de que id a que id vão as entradas com valores que foram alterados e então, fazer a $query pelo campo 'id'.
EDIT: corrigida a query SELECT
-
Certo, entendi. Acho que sei o que está acontecendo.
Acesse a tabela (via phpmyadmin, ou algo assim) e verifique se as entradas anteriores à mudança de servidor estão corretamente acentuadas. Creio que não estejam.
<SE-EU-ESTIVER-CERTO> quanto à isso, creio que a única solução seja criar um script para
- acessar os dados antigos,
- tratá-los com utf8_decode e então
- fazer um UPDATE na tabela.
Uma alternativa seria fazer as correções manualmente. Mas acho que você não vai querer fazer isso. :P
</SE-EU-ESTIVER-CERTO>
Talvez haja uma outra forma, mas se há, desconheço.
Um abraço.
-
Se entendi bem, os novos registros feitos após a mudança de server estão sendo guardados com caracteres inválidos. Seria isso? Ou talvez, somente até os caracteres acentuados? Estou supondo isso porque já passei por esse problema.
Qual o charset da página? Qual a collation do BD? Qual a collation da coluna?
Veja o que acontece se você adicionar a linha de código abaixo logo após o mysql_connect() no arquivo de conexão com o banco.
mysql_query("SET NAMES 'utf8'");
-
Que linguagem de programação você usa?
No caso do PHP, você pode usar as funções utf8_encode() ou uft8_decode() nas strings, sem ter de mexer no BD. Qual das duas usar vai depender da collation do banco de dados. Testa uma. Não funcionando, você testa a outra.
Creio que ASP também tenha funções similares.
-
Tchello, suponho que isso lhe sirva:
SELECT * FROM tabela WHERE MONTH(data_coluna)=$mes
, onde $mes, obviamente, é um mês atual.
-
Ainda sem funcionar. Acho que vale acrescentar que, estranhamente, o phpmyadmin está adicionando "LIMIT 0 , 30" à todas as consultas realizadas nessa table.
O erro retornado:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'out , nov , dez , id FROM alunosLIMIT 0, 30' at line 1
Eu estou usando a versão 5.0 do MySQL Server.
-
Denis,
Sim, o nome da tabela realmente é 'alunos'.
estou às cegas, então? Deixei um tópico no fórum do Mysql pela manhã, mas, até agora, ninguém respondeu.
beleza, valeu mesmo cara, brigadão pela ajuda. ;)
-
Aqui:
-
Não, nenhuma delas funciona. Agora me veio algo: seria pelo fato de esses campos, exceto por 'id' não serem índices?
-
Oi, Denis.
Não, não posso. Essa query foi gerada automaticamente pelo sistema no qual estou trabalhando e pra ser sincero, não sei o que esse ".(MUPD_RS)" significa.
De qualquer forma, tentei fazer a mesma cosulta, dessa vez sem esse tal ".(MUPD_RS)", e o erro continua.
BTW, pode me explicar o que é esse MUPD_RS?
-
Olá, pessoal!
Eu sou novo aqui, e relativamente novo no mysql. estou quebrando a cabeça pra tentar resolver um problema com um SELECT, que insiste em dar um erro #1064.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'out , nov , dez , id , id as kt_pk_alunos FROM alunos WHERE id = 3. ( MUPD_RS ) ' at line 1Aqui tá a query:
SELECT nome, jan, fev, mar, abr, mai, jun, jul, ago, sep, out, nov, dez, id, id AS kt_pk_alunos FROM alunos WHERE id = 3.( MUPD_RS )
Alguém aí sabe me dizer qual é o problema aqui?
Desde já, agradeço.
(Resolvido) Erro #1064
em MySQL
Postado · Editado por granito
Ok, resolvido!
Eu fiz o que você propôs, mas o problema continuou. Depois, eu renomeei o 'out' pra 'oct' e funcionou! Provavelmente o MySQL tava interpretando o 'out' como um comando, daí o problema.
Obrigado, cara. Valeu pela atenção. Abraço.
PS.: Eu concordo absolutamente com tua assinatura. Tenho isso como lema.