MySQL的错误1264, 1406, 1329 ,1101 的修改方法

注:早成这种错误的原因很多...对于引起错误的原因还没有系统的总结,现在先列出解决方案:

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

根据 mysql5.0以上版本 strict mode (STRICT_TRANS_TABLES) 的限制:这个模式是造成这类错误的根本原因
不支持对not null字段插入null值
不支持对自增长字段插入''值,可插入null值

不支持 text 字段有默认值

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

方案一:(自动增长的情况可以尝试这个方案)

 

在my.ini里找到
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
把其中的STRICT_TRANS_TABLES,去掉,
或者把sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

 

方案二:

 

待续

================================邪恶的分割线=================================

一些基本的常识:

 

1. 查看默认的sql mode模式: 
    select @@sql_mode; 

 

2. 在Mysql5.0以上版本中,有三种sql mode模式(ANSI、TRADITIONAL和STRICT_TRANS_TABLES(严格模式)).

 

3. 通过设置不同的sql mode,可以在不同严格程序进行数据校验,有效地保证了数据准确性.

 

4. 通过设置sql mode为STRICT_TRANS_TABLES(严格模式)来实现数据的严格校检,使错误数据不能插入,从而保证数据准确性.

 

5. 通过设置sql mode为ANSI模式,来保证大多数SQL符合标准SQL的语法,这样在不同数据库之间迁移时,不需要对业务修改太多.

 

6. 非严格模式:会对语法的限制降到最低,导致很多不规范的语句都可以执行,会导致歧义.

    严格模式:可以实现严格校检,使错误数据不能插入,从而保证数据准确性.

 

7.


你可能感兴趣的:(数据库编程)