#!/usr/local/bin/perl
use DBI;
use strict;
use constant endl => "\n";
my $base='test';
my $user='max';
my $pass='test';
my $host='localhost';
my $dbh=0;
my $sql=$ARGV[0];
my $charset='cp1251';
my $collation='cp1251_general_ci';
sub set_charset() {
my @x=('client','connection','database','server','results');
my $cs;
foreach $cs (@x) {
$dbh->do('set character_set_'.$cs.'='.$charset);
}
}
sub set_collation() {
my @x=('connection','database','server');
my $cs;
foreach $cs (@x) {
$dbh->do('set collation_'.$cs.'='.$collation);
}
}
sub puts( $ ) {
print(shift,endl);
}
$dbh=DBI->connect("DBI:mysql:$base:$host",$user,$pass);
if (!$dbh) {
die "Cannt connect\n";
}
puts('Connected');
print('Prepare charsets ');
set_charset();set_collation();
puts('done');
if ( -r $sql ) {
puts('Info: using ['.$sql.'] for restore');
my $cnt=0;
open SQL,$sql;
my $line='';
while($line=<SQL>) {
chomp($line);
if (($line ne '') and (not($line =~/^#/))) {
if (not $dbh->do($line) ) {
puts('Error: '.$dbh->errstr);
last;
}
$cnt++;
if (($cnt % 20)==0) {
puts($cnt);
}
}
}
puts('Total: '.$cnt);
close SQL;
}
else {
puts('Error: ['.$sql.'] not found or not readable');
}
$dbh->disconnect();
MySQL. Русские символы отказываются добавляться.
Проблема в следующем: есть локальный серв(Apache 2.2.9) и еще есть база данных(MySQL 5.0.51a). Допустим есть какая-то таблица, а в ней есть поле(`name` varchar(40) CHARACTER SET cp1251 NOT NULL). Никак не могу добавить в это поле русские символы через php скрипт хотя через phpMyAdmin все спокойно добавляется. Самое интересное что когда добавляю я, то значение id инкрементируется, но новое поле не появляется. Предпологаю что что-то с кодировкой, либо некоректно настроена БД. Как бы мне решить проблемку?)
Сам недавно сталкивался.
Спасибо болшое. Вот решение: SET NAMES cp1251. Надесь больше проблем с кодировкой в MySQL у меня не возникнет)
Цитата: 63uK
Спасибо болшое. Вот решение: SET NAMES cp1251. Надесь больше проблем с кодировкой в MySQL у меня не возникнет)
я использую следующие запросы:
Код:
SET NAMES cp1251
SET CHARACTER SET cp1251
SET character_set_connection = cp1251
SET collation_connection = cp1251
SET CHARACTER SET cp1251
SET character_set_connection = cp1251
SET collation_connection = cp1251