mysql> insert into user(id,name,password,admin_flag) values('002','name',PASSWORD('123'),'N');
ERROR 1406 (22001): Data too long for column 'password' at row 1
mysql> insert into user(id,name,password,admin_flag) values('002','name',SHA('123'),'N');
ERROR 1406 (22001): Data too long for column 'password' at row 1mysql> \s
--------------
C:\Program Files\MySQL\MySQL Server 5.0\bin\mysql.exe  Ver 14.12 Distrib 5.0.18, for Win32 (ia32)Connection id:          1
Current database:       kuai_ji
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.0.18-nt
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    gbk
Db     characterset:    gbk
Client characterset:    gbk
Conn.  characterset:    gbk
TCP port:               3306
Uptime:                 1 min 47 secThreads: 1  Questions: 10  Slow queries: 0  Opens: 1  Flush tables: 1  Open tables: 7  Queries per second avg: 0.093
--------------

解决方案 »

  1.   

    mysql> describe user;
    +------------+-------------+------+-----+---------+-------+
    | Field      | Type        | Null | Key | Default | Extra |
    +------------+-------------+------+-----+---------+-------+
    | id         | varchar(32) | NO   | PRI |         |       |
    | name       | varchar(11) | YES  |     | NULL    |       |
    | password   | varchar(32) | YES  |     | NULL    |       |
    | admin_flag | varchar(11) | YES  |     | NULL    |       |
    +------------+-------------+------+-----+---------+-------+
    4 rows in set (0.01 sec)
      

  2.   

    password('123')加密后是41位
      

  3.   

    password  varchar(32) 你把varchar(41)修改大一点看看