gpt4 book ai didi

MySQL 4.0 乱码无法转换为较新的 MySQL

转载 作者:行者123 更新时间:2023-11-29 23:49:39 24 4
gpt4 key购买 nike

我托管的网站之一仍然在 PHP 5.2 和 MySQL 4.0 上运行。它的文本是希伯来语(在网站上显示得很好),但在数据库中,文本显示为包含问号的乱码,但不完全是这样。它看起来像: ??????£ ?§???¥ ???£ ?×???

我正在尝试将此数据库移动到具有相同网站的 MySQL 5.x,但到目前为止还没有成功。我尝试过使用MYSQL 40兼容模式,以及其他兼容模式。我已确保目标数据库的 hebrew_bin 排序规则与旧的排序规则相同,并且我已经尝试过 SET NAMES。问题是,这是一种我还不熟悉的乱码,因此不知道如何将其转换为可读文本。

最佳答案

我在这里没有得到其他答案,因此别无选择,只能编写一个简单的脚本,通过 PHP 而不是通过 MySQL 转储手动执行迁移过程。

这是脚本,有一些明显的修改。请注意,该脚本是“脏代码”,它可能不安全,也不是最有效的,但如果您在内部使用它,它应该可以完成工作。请勿在未经进一步修改的情况下公众可以访问脚本的环境中使用。

<?php
$local = mysqli_connect([source server], [source username], [source password], [source DB name]) or die('No local connection');
mysqli_query($local, "SET NAMES 'hebrew'");

$remote = mysqli_connect([destination server], [destination username], [destination password], [destination DB name]) or die('No remote connection');
mysqli_query($remote, "SET NAMES 'utf8'");

$table_list = array('table1', 'table2', 'table3'); // you can get a list of tables automatically too if the list is very long

foreach ($table_list as $table)
{
$query_local = "SELECT * FROM `{$table}`";

$result_local = mysqli_query($local, $query_local) or die('Error in q1: '.mysqli_error($local));

$delete_remote = mysqli_query($remote, "DELETE FROM `{$table}` WHERE 1") or die('Error deleting table: '.$table); // necessary only if you plan to run it more than once

$i = 0;
while ($row_local = mysqli_fetch_assoc($result_local))
{
foreach ($row_local as $key => $value)
$row_local[$key] = mysqli_real_escape_string($remote, $value);

$query_remote = "INSERT INTO `{$table}` (`".implode('`, `', array_keys($row_local))."`) VALUES ('".implode("', '", $row_local)."')";

$result_remote = mysqli_query($remote, $query_remote)
or die('Error in remote q'.$i.' in table '.$table.':<br />&nbsp;&nbsp;'.mysqli_error($remote).'<br />&nbsp;&nbsp;Query: '.$query_remote);

echo 'Successfully transferred row '.$i.' in table '.$table;
echo '<br />'.PHP_EOL;

$i++;
}
}
?>

关于MySQL 4.0 乱码无法转换为较新的 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25708731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com