whoru

学习、分享、交流、沉淀

在数据库设计时,我们经常会这样设置 int(M)

⚠️ 误区大部分人把这个 M 当做能够存储多少位的数据,其实不然,这个M表示的是“显示宽度”。

使用场景:在前端的要显示一个 integer 类型的数据,数据库里设置对应的数据类型 int(4),但是写入的数据不足 4 位时,那么就会在左侧填充空格(如果开启 zerofill,则填充 0),以保证够 4 位,那么在前端显示的时候就是对应 4 个宽度的要求了。

阅读全文 »

  1. 查看容器名称或ID

    1
    2
    3
    ➜  docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"
    CONTAINER ID NAMES STATUS PORTS
    33223943f76a lnmpa_mysql_1 Up 12 hours 0.0.0.0:3306->3306/tcp
  2. 导出

    1
    ➜  docker exec -it lnmpa_mysql_1 mysqldump -uroot -p123456 -P 3306 $DATABASE_NAME > $DATABASE_NAME_20181108_001.sql
  3. 导入

    1
    ➜  docker exec -i lnmpa_mysql_1 mysql -uroot -p123456 $DATABASE_NAME < $DATABASE_NAME_20181108_001.sql

    注意:这里与导出不同,需要将参数 -it 更换为 -i ,否则会报错:cannot enable tty mode on non tty input

环境

  • 基于 docker-compose 管理的 PHP 和 MySQL 服务
  • PHP 容器中的程序连接 MySQL 容器中的服务, 采用 PDO 形式

测试代码片段

1
2
3
4
5
6
<?php
try{
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1;charset=utf8mb4;port=3306','root','root');
}catch(PDOException $pe){
die($pe->getMessage());
}

报错

1
SQLSTATE[HY000] [2002] Connection refused
阅读全文 »