首页 > 数据库 >PHP批量修改MySQL数据表字符集为utf8mb4/utf8mb4_unicode_ci

PHP批量修改MySQL数据表字符集为utf8mb4/utf8mb4_unicode_ci

时间:2024-09-03 10:07:35浏览次数:10  
标签:PDO ci utf8mb4 charset pdo 数据表 unicode

编码大全

可参考我之前的文章:
快速理解ASCII、GBK、Unicode、UTF-8、ANSI

批量修改

注意这是DDL操作,操作过程会锁表(元数据锁),平均1秒能够转码3张表(数据量不大)。
亲测操作过后没有数据异常,推荐执行前备份。

//接手一些老项目,需要修改编码。
$host = '';
$db   = '';
$user = '';
$pass = '';
$charset = 'utf8mb4';
$collate = 'utf8mb4_unicode_ci';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 从information_schema获取所有的表名
    $stmt = $pdo->query("SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = '$db'");
    $tables = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);

    // 遍历所有的表并修改其编码
    foreach ($tables as $table) {
        $sql = "ALTER TABLE `$table` CONVERT TO CHARACTER SET $charset COLLATE $collate;";
        $pdo->exec($sql);
        echo "{$table}    ====>    {$charset}/{$collate}" . PHP_EOL;
    }

} catch (PDOException $e) {
    die("MySQL连接失败" . $e->getMessage());
}

最后别忘了执行数据库本身的转码操作。

ALTER DATABASE my_database CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

标签:PDO,ci,utf8mb4,charset,pdo,数据表,unicode
From: https://www.cnblogs.com/phpphp/p/18393978

相关文章

  • 修改Exchange用户每分钟/每天的发送邮件数量的默认值MessageRateLimit和RecipientRate
    1分钟内连续多封邮件发送失败了,导致大量邮件堵塞。经查,报有下面的错误:4214.4.2Messagesubmissionrateforthisclienthasexceededtheconfiguredlimit这是因为从Exchange2010开始,默认每分钟发送的邮件封数限制为5封,这个限制参数是:MessageRateLimit  微软官网有给出此......
  • 深入剖析 PCI 转 CPCI 载板转接卡:连接不同架构的桥梁
    在计算机技术不断发展的进程中,硬件接口的多样性和演进促使了各种转接卡的出现,以满足不同接口标准之间的连接和通信需求。其中,PCI转CPCI载板转接卡作为一种关键的转接设备,在实现PCI(PeripheralComponentInterconnect)接口与CPCI(CompactPCI)接口之间的转换方面发挥着重要作用。......
  • 解读 PCIE 转 PMC 载板转接卡:跨越接口的桥梁
    在当今科技飞速发展的时代,计算机硬件的不断创新和升级为各种应用带来了更强大的性能和更多的可能性。在这一进程中,不同接口之间的转换需求日益凸显,PCIE转PMC载板转接卡便是应对这种需求的关键组件之一。PCIE转PMC载板转接卡,顾名思义,是一种用于实现PCIE(PeripheralComponen......
  • 解析 XMC 转 CPCI 载板转接卡:连接不同接口的关键纽带
    在计算机和电子设备的世界里,各种接口标准不断涌现和发展,以满足不同应用场景和性能需求。其中,XMC转CPCI载板转接卡作为一种特殊的硬件设备,在实现不同接口之间的转换和连接方面发挥着重要作用。XMC(eXtendedMezzanineCard)和CPCI(CompactPCI)是两种常见的板卡接口标准,各自具有特......
  • CPCI 转 PMC 载板转接卡
    CPCI转PMC载板转接卡是一种用于实现CompactPCI(CPCI)接口与PCIMezzanineCard(PMC)接口之间转换和连接的硬件设备。它的主要作用是解决CPCI总线设备与PMC接口设备之间的接口不兼容问题,使得这两种不同接口标准的设备能够相互通信和协同工作。在结构上,转接卡通常一端具有CP......
  • 深入了解 PCI 转 XMC 载板转接卡
    深入了解PCI转XMC载板转接卡在当今科技不断发展的时代,计算机硬件和电子设备的接口标准繁多,为了实现不同接口之间的兼容和通信,各种转接卡应运而生。其中,PCI转XMC载板转接卡扮演着重要的角色,为系统的扩展和功能的提升提供了关键的解决方案。PCI(PeripheralComponentInterc......
  • 探索 XMC 转 PCIE 载板转接卡:连接技术的创新纽带
    在当今科技日新月异的时代,电子设备的接口标准不断演进和多元化,以满足日益复杂和多样化的应用需求。在这个背景下,XMC转PCIE载板转接卡作为一种关键的连接解决方案,正逐渐展现出其重要的作用和价值。XMC(eXtendedMezzanineCard)和PCIE(PeripheralComponentInterconnectExpress......
  • 探索 PCI 转 PMC 载板转接卡:连接不同接口的桥梁
    在计算机硬件领域,各种接口和总线标准不断演进,以满足日益增长的性能和功能需求。在这个过程中,不同接口之间的转换设备应运而生,其中PCI转PMC载板转接卡就是一种重要的连接解决方案。PCI转PMC载板转接卡,顾名思义,是一种用于将计算机的PCI(PeripheralComponentInterconnect)接......
  • 【专题】2024年企业数字化人才实践研究报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=37556在当今时代,数字化转型已然成为不可逆转的变革趋势。经过多年的持续发展,中国企业的数字化转型已然迈进了“深水区”。对于众多企业来说,当下在数字化转型过程中最为迫切需要解决的问题,便是如何在已有的数字化成果基础上进行再度创新。阅读原文,......
  • Java API:BigDecimal
    JavaAPI:BigDecimal目录JavaAPI:BigDecimal1BigDecimal2示例1BigDecimalBigDecimal类使用户完全控制舍入行为。如果未指定舍入模式,并且无法表示确切的结果,则抛出异常;否则,可以通过向操作提供适当的MathContext对象来进行计算,以选择精度和舍入模式。在这两种情况下,都......