【Django错误】OSError: raw write() returned invalid length 14 (should have been between 0 and 7)

时间:2022-05-08
本文章向大家介绍【Django错误】OSError: raw write() returned invalid length 14 (should have been between 0 and 7),主要内容包括错误环境、错误代码、错误原因、解决办法、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

错误环境

使用Django框架创建完models类的之后,用python manage.py migrate命令来生成数据库表的时候出错

错误代码

Operations to perform:
  Apply all migrations: SMS, admin, auth, contenttypes, sessions
Running migrations:
Running migrations:
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "C:python35libsite-packagesdjangocoremanagement__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "C:python35libsite-packagesdjangocoremanagement__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:python35libsite-packagesdjangocoremanagementbase.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
    self.execute(*args, **cmd_options)
  File "C:python35libsite-packagesdjangocoremanagementbase.py", line 330, in execute
    output = self.handle(*args, **options)
  File "C:python35libsite-packagesdjangocoremanagementcommandsmigrate.py", line 177, in handle
    self.stdout.write(self.style.MIGRATE_HEADING("Running migrations:"))
  File "C:python35libsite-packagesdjangocoremanagementbase.py", line 110, in write
    self._out.write(force_str(style_func(msg)))
OSError: raw write() returned invalid length 42 (should have been between 0 and 21)

错误原因

与win10系统、版本有关系

可能是unicode字符的返回值问题

解决办法

可以使用pip install win_unicode_console安装win_unicode_console,在代码文件中添加以下两行代码解决:

import win_unicode_console
win_unicode_console.enable()