我的 Ubuntu 开发盒上有一个 MySQL 服务器(我使用“如何在 ubuntu 上安装灯”类型的教程),我决定安装 mariadb。
所以我卸载了mysql并安装了mariadb。
~$ mysql --version
mysql Ver 15.1 Distrib 10.0.3-MariaDB, for debian-linux-gnu (i686) using readline 5.1
~$ mysqld --version
mysqld Ver 10.0.3-MariaDB-1~precise-log for debian-linux-gnu on i686 (mariadb.org binary distribution)
安装工作正常,我所有的数据库都工作正常,除了运行代码时出现此错误:
警告:mysqli::mysqli() [mysqli.mysqli]:标头和客户端库次要版本不匹配。标题:50529 库:100003 在 /var/www/test.php 第 5 行
这是我的 php 代码:
$mysqli = new mysqli("localhost", "root", "", "test");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT * FROM test";
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_assoc()) {
printf ("%s (%s)\n", $row["id"], $row["name"]);
}
$result->free();
}
$mysqli->close();
和mysql信息:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 40
Server version: 10.0.3-MariaDB-1~precise-log mariadb.org binary distribution
Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> select version();
+------------------------------+
| version() |
+------------------------------+
| 10.0.3-MariaDB-1~precise-log |
+------------------------------+
1 row in set (0.00 sec)
MariaDB [test]> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test |
+----------------+
1 row in set (0.01 sec)
MariaDB [test]> show create table test\G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
MariaDB [test]> select * from test;
+------+------+
| id | name |
+------+------+
| 1 | dev |
| 2 | qa |
+------+------+
2 rows in set (0.01 sec)
我尝试了mysql_upgrade:
mysql_upgrade --force
Phase 1/3: Fixing table and database names
Phase 2/3: Checking and upgrading tables
Processing databases
information_schema
mysql
mysql.column_stats OK
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.gtid_slave_pos OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.index_stats OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.servers OK
mysql.slave_master_info OK
mysql.slave_relay_log_info OK
mysql.slave_worker_info OK
mysql.table_stats OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
performance_schema
test
test.test OK
Phase 3/3: Running 'mysql_fix_privilege_tables'...
OK
据我所知,一切都很好。有什么问题?
另外,MariaDB 准备好投入生产了吗?
答案在 MariaDB 知识库中:https ://kb.askmonty.org/en/installation-issues-with-php5/ - 基本上,PHP 已经与 MySQL 5.5 库进行了编译,您会收到版本不匹配警告 - 这个不是错误,您仍然可以正常运行代码。有很多方法可以解决这个问题,最明显的是使用 mysqlnd,它是一个原生 PHP 扩展,与任何旧的 mysqlclient 库都没有链接。