LoginSignup
0
2

More than 5 years have passed since last update.

mysql 4.0 対応のクライアント

Last updated at Posted at 2016-11-30

ERROR 2027 (HY000): Malformed packet

mysql-clientが対応していない。

検証

mysql 4.0.27 に対して接続を試みた。

client 結果
mariadb-client 10.1.18 OK
mysql-client 5.6 OK (--skip-secure-auth)
php 5.6 + pdo,mysqli OK
ruby 2.3 + ruby-mysql (with-mysql-dir) OK
mysql-connector-java-5.1.31-bin.jar OK
php 5.6 + cakephp 2 OK
php 5.6 + CodeIgniter 2 OK
php 5.6 + CodeIgniter 3.1.2 (mysql_driver) OK
client 結果
mysql 5.7 NG
php 7 + pdo,mysqli NG
ruby 2.3 + ruby-mysql NG
ruby 2.3 + ruby-mysql2 NG
ruby 2.3 + ruby-mysql2 (with-mysql-dir) ビルドエラー
mysql-connector-java-5.1.32 以降 NG
php 5.6 + lumen 5, laravel 5.3 NG
php 5.6 + lumen 5 (facade) NG
php 5.6 + cakephp 3 NG
php 5.6 + CodeIgniter 3.1.2 (mysqli_driver) NG
名前 サイズ ファイル数
lumen 5.3 33M 4928
laravel 5.3 39M 6085
CakePHP 2.9.3 13M 1517
CakePHP 3.3.9 26M 3877
CodeIgniter 2 2.0MB 190
CodeIgniter 3.1.2 2.7MB 301
  • CodeIgniter は マニュアル(user_guide)を除いて計測

php 7 + pdo

pdo
$mysql = new PDO('mysql:host=$dbserver;dbname=test', $user, $pass);

$sql = "select now() as now";
$rows = $mysql->query($sql)->fetchAll(PDO::FETCH_ASSOC);

foreach($rows as $key=>$val) {
        echo $val["now"];
        echo "<br>";
}

PHP Fatal error: Uncaught PDOException: PDO::__construct(): Connecting to 3.22, 3.23 & 4.0 is not supported. Server is 4.0.27-log in a.php

mysqi
$mysqli = new mysqli($dbserver, $user, $pass, "test");

$sql = "select now() as now";
if ($result = $mysqli->query($sql)) {
    while ($row = $result->fetch_assoc()) {
        echo $row["now"] . "<br>";
    }
}
mysql_connectは廃止されたので使えない
$c = mysql_connect($dbserver, $user, $pass);

ruby-mysql

a.rb
require 'mysql'

connection = Mysql::connect("127.0.0.1", "root", "root", "test")
#connection.query("set character set utf8")
rs = connection.query("show tables")
rs.each do |r|
  puts r.join ", "
end
connection.close
/etc/ld.so.conf.d/opt-mysql.conf
/opt/mysql/lib/mysql/
ソースから入れるときにmysql4が入っている場所指定
sudo gem install mysql -- --with-mysql-dir=/opt/mysql
# 以下ライブラリが生成されている様子
#/var/lib/gems/2.3.0/gems/mysql-2.9.1/lib/mysql/mysql_api.so
#/var/lib/gems/2.3.0/gems/mysql-2.9.1/ext/mysql_api/mysql_api.so
#/var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/mysql-2.9.1/mysql/mysql_api.so
sudo ldconfig
ruby a.rb

接続成功した。

ruby-mysql2

require "mysql2"

$client = Mysql2::Client.new(
  :host     => "127.0.0.1",
  :username => "root",
  :password => "root",
  :database => "test"
)

sql = %{
  show tables
}
res = $client.query(sql)

res.each{|row|
  p row
}
このビルドは成功しなかった
sudo gem install mysql2 -- --with-mysql-dir=/opt/mysql
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2