Benature/WordReview

导入单词书时报错: UNIQUE constraint failed: books.BOOK_zh

Sirius-cyber opened this issue · 21 comments

不知道是我输入的单词书名字的问题还是绝对路径有问题?
我的设置如下:
单词本的名字:cut3000
单词本的中文名:单词再见
单词本的缩写:A
单词本序号:0
单词 excel 文件路径(绝对路径):D:/words/3000-master/3000.xlsx

不输入任何中文的时候还是报错: UNIQUE constraint failed: books.BOOK

看报错应该是你重复导入数据了,每一本书的单词本的名字需要是唯一的,当第二次导入相同的名字时候就会有报错

UNIQUE constraint failed: books.BOOK

解决方式有:

  • 删掉数据库文件然后(如果你现在只有一本单词书(cut3000))
    • 重新生成一份
    • 或者在 release 页直接下载空白的数据库文件
  • 编辑数据库在表books中删除导入的那本书

然后重新导入单词书


如果你不打算在 release 页重新下载的话,希望能提供操作系统(mac / windows)以及使用方式(源码 / 可执行文件)等信息,不然都写出来可能会有点啰嗦

刚刚下载了release的数据库文件并替换了安装目录下的数据库文件,重新导入新的excel名后显示:您的输入有问题😯 'word'。
操作系统:windows ; 使用方式:源码

如果使用源码不建议下载 release 的文件,因为最近刚更新过数据库字段。

删除db.sqlite文件后在项目根目录运行:

python manage.py makemigrations
python manage.py migrate

重新生成db.sqlite3文件后再导入还是报错 您的输入有问题😯 'word'
大小是164kb,比release的版本168k小

emmm,这情况有点陌生,能否到命令行把相关的报错贴上来,网页提供的报错信息不太够

(tgword) PS D:\words\WordReview-ben\WordReview-ben> python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
April 26, 2020 - 21:33:12
Django version 3.0.3, using settings 'WordReview.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[26/Apr/2020 21:33:14] "GET / HTTP/1.1" 200 1649
[26/Apr/2020 21:33:14] "GET /static/fontawesome/font-awesome.min.css HTTP/1.1" 404 1823
[26/Apr/2020 21:33:20] "GET / HTTP/1.1" 200 1649
[26/Apr/2020 21:33:20] "GET /static/fontawesome/font-awesome.min.css HTTP/1.1" 404 1823
[26/Apr/2020 21:33:21] "GET /import/ HTTP/1.1" 200 2501
[26/Apr/2020 21:33:21] "GET /static/fontawesome/font-awesome.min.css HTTP/1.1" 404 1823
<QueryDict: {'csrfmiddlewaretoken': ['WTLhxBEC4Hf4qkS1c0ZlPQxdoq34SKPRQNgxph9a8eVEICkz7Bmq6rhbS7JMAVKs'], 'BOOK': ['gre'], 'BOOK_zh': ['单词再见'], 'BOOK_abbr': ['A'], 'begin_index': ['0'], 'excel_path': ['D:/words/cut3000.xlsx']}>
gre 单词再见 A 0 D:/words/cut3000.xlsx
[26/Apr/2020 21:33:57] "POST /import/ HTTP/1.1" 200 2590
[26/Apr/2020 21:33:57] "GET /static/fontawesome/font-awesome.min.css HTTP/1.1" 404 1823

🤦‍♂️对不起我忘了我用异常处理把报错截胡了,可能需要你在apps/review/views.py文件上做些修改,大概在53-57 行有如下

try:
    init_db(BOOK, BOOK_zh, BOOK_abbr, begin_index,
            excel_path, Books, Review, BookList, Words)
except Exception as e:
    return render(request, "import_db.pug", {'message': e})

把它改成

#try:
init_db(BOOK, BOOK_zh, BOOK_abbr, begin_index,
            excel_path, Books, Review, BookList, Words)
#except Exception as e:
#    return render(request, "import_db.pug", {'message': e})

保存修改后程序应该会自动重启,然后重新触发下报错,命令行应该会有一串报错了。

(是我糊涂了抱歉抱歉)

好的好的,现在重新更改了,哗啦哗啦地录进去了。谢谢您啦。
对了,windows使用可执行文件时不可执行,所以才选择了源码。
另外,有一个小小建议(也不知道对不对):
在小白篇安装教程最好加上“提前安装Microsoft Visual Studio 2014以上版本”
(我也不知道行不行,是在这里下载直接安装的)
http://download.microsoft.com/download/5/F/7/5F7ACAEB-8363-451F-9425-68A90F98B238/visualcppbuildtools_full.exe

理由:
从未用过danjo,在配置环境安装各种包的时候有三个依赖包(rcssmin,rjsmin,libsass)提示需要安装Microsoft Visual Studio 2014以上版本。当时设置了不安装C扩展(--install-option="--without-c-extensions"),到了安装libsass的时候才发现不能跳过C这一步,安装了visualcppbuildtools之后才配置好。

对了,windows使用可执行文件时不可执行,所以才选择了源码。

这个可以贴下报错吗,我在 win 上面测试过了可以运行(虽然不确定是不是因为那个电脑装了其他奇奇怪怪的别的东西导致可以运行...)


从未用过django,在配置环境安装各种包的时候有三个依赖包(rcssmin,rjsmin,libsass)提示需要安装Microsoft Visual Studio 2014以上版本。当时设置了不安装C扩展(--install-option="--without-c-extensions"),到了安装libsass的时候才发现不能跳过C这一步,安装了visualcppbuildtools之后才配置好。

🤯原来还要装 VS 的吗,我的 win 的确是装了 VS(以及 VS 的工具包) 的所以还真没法判断🤦‍♂️。不过我大概浏览了下官网指引(https://docs.djangoproject.com/zh-hans/3.0/howto/windows/)好像并没有提到需要 VS 依赖。
总之先谢谢提醒啦,我会把这个先加到文档里的。

😊
报错是前天的了,当时没有截图。主要报了这个:Microsoft Visual C++ 14.0 is required

报错是前天的了,当时没有截图。主要报了这个:Microsoft Visual C++ 14.0 is required

是指运行可执行文件的时候遇到这个报错了吗🧐

不是,是在Anaconda Power Shell Prompt里面pip install一堆包的过程中报错,报错后会停止后面的一系列安装。

😯 这样,那看样子是django-sass-processor的安装依赖:

libsass is not required on the production environment, if SASS/SCSS files have been precompiled and deployed using offline compilation.

提问:更新源码后导入单词书又出错了🤦‍♂️
删掉了之前的目录,在新源码目录进入新的虚拟环境(之前的删掉重来了),运行

python manage.py makemigrations
python manage.py migrate

之后在导入单词书sample.xlsx时出错(并无改动)
试了多次都报同样的错误:

Internal Server Error: /import/
Traceback (most recent call last):
  File "D:\words\WordReview-ben\WordReview-ben\apps\review\src\init_db.py", line 71, in init_db_words
    word = Words.objects.get(word=dr['word'])
  File "D:\anaconda\envs\tgword\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "D:\anaconda\envs\tgword\lib\site-packages\django\db\models\query.py", line 415, in get
    raise self.model.DoesNotExist(
apps.review.models.Words.DoesNotExist: Words matching query does not exist.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\anaconda\envs\tgword\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "D:\anaconda\envs\tgword\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "D:\anaconda\envs\tgword\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "D:\words\WordReview-ben\WordReview-ben\apps\review\views.py", line 54, in import_db
    init_db(BOOK, BOOK_zh, BOOK_abbr, begin_index,
  File "D:\words\WordReview-ben\WordReview-ben\apps\review\src\init_db.py", line 101, in init_db
    init_db_words(Review, Words, df)
  File "D:\words\WordReview-ben\WordReview-ben\apps\review\src\init_db.py", line 80, in init_db_words
    if key in dr.columns:
  File "D:\anaconda\envs\tgword\lib\site-packages\pandas\core\generic.py", line 5270, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'columns'
[27/Apr/2020 14:00:41] "POST /import/ HTTP/1.1" 500 106120

报错是前天的了,当时没有截图。主要报了这个:Microsoft Visual C++ 14.0 is required

是指运行可执行文件的时候遇到这个报错了吗🧐

我的是执行可执行文件的时候什么错也不会报,只看见命令行闪了一下就没有了,然后什么也不会发生

@cococooller 需要新开一个命令行, cd 到可执行文件所在路径,运行

./WordReview_D # 加个 tab 吧我不确定要不要后缀.exe

此时应该能看到报错且命令行窗口不会自行关闭

sorry 我加新 feature 的时候代码手抖了,在apps/review/src/init_db.py文件的第 80 行

if key in dr.columns:

改为

if key in df.columns:

修正已经 commit了,可以直接更新(这回应该没事了

😁解决了)

@cococooller 需要新开一个命令行, cd 到可执行文件所在路径,运行

./WordReview_D # 加个 tab 吧我不确定要不要后缀.exe

此时应该能看到报错且命令行窗口不会自行关闭

哦哦,然后他报错是这样的。 File "manage.py", line 5, in
File "", line 991, in _find_and_load
File "", line 975, in _find_and_load_unlocked
File "", line 671, in _load_unlocked
File "d:\muyi program files\anaconda\envs\exe\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 623, in exec_module
File "config.py", line 11, in
File "configparser.py", line 697, in read
File "configparser.py", line 1017, in _read
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 87: illegal multibyte sequence
[10060] Failed to execute script manage