MySQL-Server: 4.1.7-standard <-> MySQL-Client: 4.0.21

MySQL, PostgreSQL, SQLite
web-gear
Posts: 59
Joined: 2003-03-15 00:25

MySQL-Server: 4.1.7-standard <-> MySQL-Client: 4.0.21

Post by web-gear » 2004-12-04 18:39

Hallo zusammen,

ich habe mir einen neuen MySQL Datenbankserver eingerichtet. Darauf läuft MySQL 4.1.7-standard (Official RPM). Als Client habe ich das SuSE 9.2 beiliegende RPM-Paket gelassen, wel ich sonst nicht das php-mysql Paket nutzen kann (=MySQL Funktionen für PHP). Dieses ist die Version 4.0.21.

Version von Client und Server sind also unterschiedlich. Ich möchte jetzt UTF-8 in der gesamten DB nutzen, und habe bereits in der my.cnf das folgende eingestellt:

Code: Select all

default-character-set=utf8
default-collation=utf8_general_ci
character_set_server=utf8
collation_server=utf8_general_ci
Es klappt alles soweit wunderbar. Nur wenn ich jetzt mit

Code: Select all

mysql_client_encoding($connection)
die Kodierung der Verbindung abrufen will, erhalte ich "latin1", was völlig unerwünscht ist, da alles komplett in UTF-8 ablaufen soll.

Auch ein

Code: Select all

mysql_query("SET NAMES 'utf8'", $connection);
wie es im MySQL Manuel steht, bringt nichts, die Query erzeugt aber keinen Fehler.

Aber das Client Encoding bleibt einfach bei "latin1". Wie kann ich das umstellen?

Ich frage mich auch, ob es an der alten Version des MySQL Client Pakets liegen könnte?

Bevor ich jetzt anfange die Extension deswegen selbstzukompilieren, möchte ich doch fragen ob es da keine Lösung gibt die mir entgangen ist.

Danke!

MfG
Hermann

User avatar
Joe User
Project Manager
Project Manager
Posts: 11139
Joined: 2003-02-27 01:00
Location: Hamburg

Re: MySQL-Server: 4.1.7-standard <-> MySQL-Client: 4.0.21

Post by Joe User » 2004-12-04 20:17

PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

web-gear
Posts: 59
Joined: 2003-03-15 00:25

Re: MySQL-Server: 4.1.7-standard <-> MySQL-Client: 4.0.21

Post by web-gear » 2004-12-05 22:05

Hallo,

vielen Dank, aber da stand nichts Neues für mich drin. Ich weiß, dass die UTF-8 Unterstützung erst mit 4.1 gekommen ist, deswegen setze ich das ja auch ein!

Welche Frage nämlich in der MySQL Doku unbeantwortet bleibt, ist ob ich dafür auch den Client 4.1.7 brauche.

Wenn es jemanden hier gibt, der das überzeugt mit "JA" (oder vermutlich "NATÃ?RLICH") beantwortet, wäre ich sehr dankbar, wenn er es doch bitte tun würde.

Tatsache ist, dass es soweit ich das beurteilen kann, auch so einwandfrei "funktioniert". phpMyAdmin gibt mir z.B. für die Collations der Spalten die gewünschte Konstante für UTF-8 General aus, so wie ich es eingestellt habe.
Trotzdem kann ich das System so nicht einsetzen, wenn ich als Kodierung für die Connection "latin1" bekomme, obwohl es "utf8" sein müsste.

Vielen Dank!

MfG
Hermann

User avatar
Joe User
Project Manager
Project Manager
Posts: 11139
Joined: 2003-02-27 01:00
Location: Hamburg

Re: MySQL-Server: 4.1.7-standard <-> MySQL-Client: 4.0.21

Post by Joe User » 2004-12-06 11:27

web-gear wrote:Welche Frage nämlich in der MySQL Doku unbeantwortet bleibt, ist ob ich dafür auch den Client 4.1.7 brauche.
Ja.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

web-gear
Posts: 59
Joined: 2003-03-15 00:25

Re: MySQL-Server: 4.1.7-standard <-> MySQL-Client: 4.0.21

Post by web-gear » 2004-12-09 02:11

Hallo,

danke für die Antwort.

Ich habe heute Nacht also versucht, für mein PHP 4.3.8 ein Modul zu kompilieren, mit dem ich als Client die Version 4.1.7 nutzen kann.

Problem dabei ist, das laut der PHP Website (den genauen Link finde ich jetzt leider nicht mehr) die gewöhnliche MySQL Extension bei Versipn ab 4.1 nicht mehr funktioniert. Stattdessen soll man MySQL Improved (mysqli) verwenden.

Ich habe mir also aus dem aktuellen Release die mysqli-Dateien aus dem ext-Ordner geholt.

Bei Konfigurieren scheint es aber Konflikte mit der installierten libmysqlclient.so zu geben.

Folgende RPM's habe ich installiert:

MySQL-client-4.1.7-0.i386.rpm
MySQL-devel-4.1.7-0.i386.rpm
MySQL-server-4.1.7-0.i386.rpm
MySQL-shared-4.1.7-0.i386.rpm

Müsste also alles da sein. Ich habe es überprüft, es existieren keinerlei "alte" Dateien mehr, nur die aus dieses RPM's.

Ich habe mit der Kompilierung wie folgt begonnen:

Code: Select all

# export PHP_PREFIX="/usr"
# $PHP_PREFIX/bin/phpize
Das klappt soweit wunderbar. Dan wollte ich das "./configure" starten:

Code: Select all

./configure --without-mysql --with-mysqli=/usr/bin/mysql_config
Der Pfad zu "mysql_config" ist korrekt.

Ich habe mich dabei an das Manuel unter http://de.php.net/manual/de/ref.mysqli.php gehalten.
Trotzdem trat leider ein Fehler auf, der mich in eine Sackgasse verfrachtet hat und zu dem ich im Internet keine Hilfen gefunden habe:

Code: Select all

configure:3476: error: wrong mysql library version or lib not found. Check config.log for more information.
Die Dateien sind da, das habe ich überprüft. Warum ist die Version falsch?? Er findet nur inkompatible libmysqlclient-Dateien.

Hier die config.log:

Code: Select all

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by configure, which was
generated by GNU Autoconf 2.59.  Invocation command line was

  $ ./configure --without-mysql --with-mysqli=/usr/bin/mysql_config

## --------- ##
## Platform. ##
## --------- ##

hostname = linux
uname -m = x86_64
uname -r = 2.6.8-24.3-default
uname -s = Linux
uname -v = #1 Tue Oct 26 14:40:54 UTC 2004

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = x86_64
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
hostinfo               = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /sbin
PATH: /usr/sbin
PATH: /usr/local/sbin
PATH: /root/bin
PATH: /usr/local/bin
PATH: /usr/bin
PATH: /usr/X11R6/bin
PATH: /bin
PATH: /usr/games
PATH: /opt/gnome/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:1527: checking build system type
configure:1545: result: x86_64-suse-linux
configure:1553: checking host system type
configure:1567: result: x86_64-suse-linux
configure:1658: checking for gcc
configure:1674: found /usr/bin/gcc
configure:1684: result: gcc
configure:1928: checking for C compiler version
configure:1931: gcc --version </dev/null >&5
gcc (GCC) 3.3.4 (pre 3.3.5 20040809)
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:1934: $? = 0
configure:1936: gcc -v </dev/null >&5
Reading specs from /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/specs
Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --enable-languages=c,c++,f77,objc,java,ada --disable-checking --libdir=/usr/lib64 --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib64 --with-system-zlib --enable-shared --enable-__cxa_atexit x86_64-suse-linux
Thread model: posix
gcc version 3.3.4 (pre 3.3.5 20040809)
configure:1939: $? = 0
configure:1941: gcc -V </dev/null >&5
gcc: `-V' option must have argument
configure:1944: $? = 1
configure:1967: checking for C compiler default output file name
configure:1970: gcc    conftest.c  >&5
configure:1973: $? = 0
configure:2019: result: a.out
configure:2024: checking whether the C compiler works
configure:2030: ./a.out
configure:2033: $? = 0
configure:2050: result: yes
configure:2057: checking whether we are cross compiling
configure:2059: result: no
configure:2062: checking for suffix of executables
configure:2064: gcc -o conftest    conftest.c  >&5
configure:2067: $? = 0
configure:2092: result:
configure:2098: checking for suffix of object files
configure:2119: gcc -c   conftest.c >&5
configure:2122: $? = 0
configure:2144: result: o
configure:2148: checking whether we are using the GNU C compiler
configure:2172: gcc -c   conftest.c >&5
configure:2178: $? = 0
configure:2182: test -z
                         || test ! -s conftest.err
configure:2185: $? = 0
configure:2188: test -s conftest.o
configure:2191: $? = 0
configure:2204: result: yes
configure:2210: checking whether gcc accepts -g
configure:2231: gcc -c -g  conftest.c >&5
configure:2237: $? = 0
configure:2241: test -z
                         || test ! -s conftest.err
configure:2244: $? = 0
configure:2247: test -s conftest.o
configure:2250: $? = 0
configure:2261: result: yes
configure:2278: checking for gcc option to accept ANSI C
configure:2348: gcc  -c -g -O2  conftest.c >&5
configure:2354: $? = 0
configure:2358: test -z
                         || test ! -s conftest.err
configure:2361: $? = 0
configure:2364: test -s conftest.o
configure:2367: $? = 0
configure:2385: result: none needed
configure:2403: gcc -c -g -O2  conftest.c >&5
conftest.c:2: error: parse error before "me"
configure:2409: $? = 1
configure: failed program was:
| #ifndef __cplusplus
|   choke me
| #endif
configure:2543: checking whether gcc and cc understand -c and -o together
configure:2573: gcc -c conftest.c -o conftest.o >&5
configure:2576: $? = 0
configure:2578: gcc -c conftest.c -o conftest.o >&5
configure:2581: $? = 0
configure:2588: cc -c conftest.c >&5
configure:2591: $? = 0
configure:2594: cc -c conftest.c -o conftest.o >&5
configure:2597: $? = 0
configure:2599: cc -c conftest.c -o conftest.o >&5
configure:2602: $? = 0
configure:2620: result: yes
configure:2635: checking if compiler supports -R
configure:2659: gcc -o conftest -g -O2   conftest.c -R /usr/  >&5
gcc: unrecognized option `-R'
/usr/: file not recognized: Is a directory
collect2: ld returned 1 exit status
configure:2665: $? = 1
configure: failed program was:
| /* confdefs.h.  */
|
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| /* end confdefs.h.  */
|
| int
| main ()
| {
|
|   ;
|   return 0;
| }
configure:2692: result: no
configure:2697: checking if compiler supports -Wl,-rpath,
configure:2721: gcc -o conftest -g -O2   conftest.c -Wl,-rpath,/usr/  >&5
configure:2727: $? = 0
configure:2731: test -z
                         || test ! -s conftest.err
configure:2734: $? = 0
configure:2737: test -s conftest
configure:2740: $? = 0
configure:2754: result: yes
configure:2800: checking for PHP prefix
configure:2802: result: /usr
configure:2804: checking for PHP includes
configure:2806: result: -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/Zend -I/usr/include/php/TSRM
configure:2808: checking for PHP extension directory
configure:2810: result: /usr/lib64/php/extensions
configure:2852: checking for re2c
configure:2879: result: exit 0;
configure:2891: checking for gawk
configure:2907: found /usr/bin/gawk
configure:2917: result: gawk
configure:2931: checking for MySQLi support
configure:2974: result: yes, shared
configure:2982: checking whether to enable embedded MySQLi support
configure:2999: result: no
configure:3121: checking for mysql_set_server_option in -lmysqlclient
configure:3151: gcc -o conftest -g -O2  -Wl,-rpath,/usr/lib/mysql -L/usr/lib/mysql  -lmysqlclient -lcrypt -lnsl -lm -lz -lnss_files -lnss_dns -lresolv -lnss_files -lnss_dns -lresolv conftest.c -lmysqlclient   >&5
/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.a when searching for -lmysqlclient
/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib/libmysqlclient.so when searching for -lmysqlclient
/usr/lib64/gcc-lib/x86_64-suse-linux/3.3.4/../../../../x86_64-suse-linux/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
configure:3157: $? = 1
configure: failed program was:
| /* confdefs.h.  */
|
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| /* end confdefs.h.  */
|
| /* Override any gcc2 internal prototype to avoid an error.  */
| #ifdef __cplusplus
| extern "C"
| #endif
| /* We use char because int might match the return type of a gcc2
|    builtin and then its argument prototype would still apply.  */
| char mysql_set_server_option ();
| int
| main ()
| {
| mysql_set_server_option ();
|   ;
|   return 0;
| }
configure:3183: result: no
configure:3476: error: wrong mysql library version or lib not found. Check config.log for more information.

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=x86_64-suse-linux
ac_cv_build_alias=x86_64-suse-linux
ac_cv_c_compiler_gnu=yes
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXCPP_set=
ac_cv_env_CXXCPP_value=
ac_cv_env_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_F77_set=
ac_cv_env_F77_value=
ac_cv_env_FFLAGS_set=
ac_cv_env_FFLAGS_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_exeext=
ac_cv_host=x86_64-suse-linux
ac_cv_host_alias=x86_64-suse-linux
ac_cv_lib_mysqlclient_mysql_set_server_option=no
ac_cv_objext=o
ac_cv_prog_AWK=gawk
ac_cv_prog_RE2C='exit 0;'
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_cc_g=yes
ac_cv_prog_cc_gcc_c_o=yes
ac_cv_prog_cc_stdc=
php_cv_cc_dashr=no
php_cv_cc_rpath=yes

## ----------------- ##
## Output variables. ##
## ----------------- ##

AR=''
AWK='gawk'
CC='gcc'
CFLAGS='-g -O2'
CPP=''
CPPFLAGS=''
CXX=''
CXXCPP=''
CXXFLAGS=''
DEFS=''
ECHO='echo'
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
EXEEXT=''
F77=''
FFLAGS=''
LDFLAGS=''
LIBOBJS=''
LIBS=''
LIBTOOL=''
LN_S=''
LTLIBOBJS=''
OBJEXT='o'
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'
RANLIB=''
RE2C='exit 0;'
SHELL='/bin/sh'
STRIP=''
ac_ct_AR=''
ac_ct_CC='gcc'
ac_ct_CXX=''
ac_ct_F77=''
ac_ct_RANLIB=''
ac_ct_STRIP=''
bindir='${exec_prefix}/bin'
build='x86_64-suse-linux'
build_alias=''
build_cpu='x86_64'
build_os='linux'
build_vendor='suse'
datadir='${prefix}/share'
exec_prefix='NONE'
host='x86_64-suse-linux'
host_alias=''
host_cpu='x86_64'
host_os='linux'
host_vendor='suse'
includedir='${prefix}/include'
infodir='${prefix}/info'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localstatedir='${prefix}/var'
mandir='${prefix}/man'
oldincludedir='/usr/include'
prefix='/usr'
program_transform_name='s,x,x,'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target_alias=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

#define PACKAGE_BUGREPORT ""
#define PACKAGE_NAME ""
#define PACKAGE_STRING ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""

configure: exit 1
Weiß jemand Rat?

Vielen Dank schon im Voraus!

MfG
Hermann

User avatar
Joe User
Project Manager
Project Manager
Posts: 11139
Joined: 2003-02-27 01:00
Location: Hamburg

Re: MySQL-Server: 4.1.7-standard <-> MySQL-Client: 4.0.21

Post by Joe User » 2004-12-09 10:28

Die "normale" MySQL-Extension wird von PHP 5.x nach wie vor in vollem Umfang unterstützt, während die MySQLi-Extension erst ab PHP 5.0.3 weitestgehend, aber nicht vollständig, unterstützt wird...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

web-gear
Posts: 59
Joined: 2003-03-15 00:25

Re: MySQL-Server: 4.1.7-standard <-> MySQL-Client: 4.0.21

Post by web-gear » 2004-12-09 13:05

Von http://de.php.net/manual/de/ref.mysqli.php:
Yair Lapin
10-Nov-2004 04:28
I successed to install php support for a mysql 4.1.7 database after several attempts because the instructions are not clear.
I have a server with linux SuSe 9 enterprise with apache 1.3.31. I installed mysql from rpm files, i installed php 4.3.9 as dynamic library. this version database needs its own client library else the mysql functions in php will not work.
configuration must be as following:

./configure --with-msqli=/usr/bin/mysql_config --with-mysql=/usr --with-apxs=/usr/local/apache/bin/apxs

Must be installed in your machine the correct mysql librery:

MySQL-devel-4.1.7-0
MySQL-shared-4.1.7-0
Ich habe das so interpretiert, als könnte ich mysqli auch mit PHP 4 nutzen, wenn ich es als Extrension kompiliere.

Wenn ich Deine Aussage richtig verstehe, dann ist mysqli mit PHP 4 nicht lauffähig? Ich müsste also auf PHP 5 wechseln, wenn ich mysqli nutzen will?

Kannst Du das bestätigen, dass man mit der mysql Extension den MySQL Client 4.1.7 nicht mehr ansprechen kann?

DANKE!

MfG
Hermann

User avatar
Joe User
Project Manager
Project Manager
Posts: 11139
Joined: 2003-02-27 01:00
Location: Hamburg

Re: MySQL-Server: 4.1.7-standard <-> MySQL-Client: 4.0.21

Post by Joe User » 2004-12-09 16:53

web-gear wrote:Wenn ich Deine Aussage richtig verstehe, dann ist mysqli mit PHP 4 nicht lauffähig?
Richtig, es sei denn, Du fertigst Dir, entsprechendes Know-How vorausgesetzt, selbst einen eigenen Backport der MySQLi-Extension an.
web-gear wrote:Ich müsste also auf PHP 5 wechseln, wenn ich mysqli nutzen will?
Ja, mindestens auf PHP 5.0.3, welches noch nicht released wurde ;)
web-gear wrote:Kannst Du das bestätigen, dass man mit der mysql Extension den MySQL Client 4.1.7 nicht mehr ansprechen kann?
Nein, der MySQL-Client-4.1.7 lässt sich nach wie vor über die "alte" MySQL-Extension von PHP 4/5 ansprechen.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

arty
Userprojekt
Userprojekt
Posts: 729
Joined: 2002-06-12 10:11

Re: MySQL-Server: 4.1.7-standard <-> MySQL-Client: 4.0.21

Post by arty » 2004-12-28 12:32

Hi,

MySQLi wird niemals auf PHP4 funktionieren, da es auf das neue Objektmodell der Zend Engine 2 aufbaut.

bye
Thorsten