Django + Postgresql에서 duplicate key value violates unique constraint 오류

0. 환경 - Python 3.7 - Django 1.11 - Postgresql 9.6 Django 관리자 페이지에서 row를 추가하려니 "duplicate key value violates unique constraint"오류가 발생했다. http://searene.me/2016/01/10/django-db-utils-IntegrityError-duplicate-key-value-violates-unique-constraint/  이 페이지 참조해서 sequence를 바꿔주었다. 1. 데이터베이스 접속   \list로 데이터 베이스 이름 확인 후 \connect [데이터베이스이름] 으로 수정할 데이터베이스에 접속한다. 2. id 최댓값 확인   sequence의 마지막 값(=해당 테이블의 마지막 id)는 아래 명령어로 확인할 수 있다. SELECT last_value FROM [sequence이름]; sequence이름은 보통 [테이블이름]_id_seq이고, django에서 만들어주는 테이블 이름은 [앱이름(소문자)]_[모델이름(소문자)]이니까 보통은 [앱이름]_[모델이름]_id_seq로 찾으면 된다. 처음 테이블을 만든 후 모델이름을 수정해도 sequence이름까지 바뀌진 않으니 아래 명령어로 정확히 확인해보자. SELECT c.relname FROM pg_class c WHERE c.relkind = 'S'; sequence의 last_value가 해당 테이블의 마지막 id가 아니면 sequence를 수정해야 한다. 3. sequence 수정 ALTER SEQUENCE [sequence이름] RESTART WITH [마지막id+1];

React native 0.59 + SDK 28(+AndroidX)로 업그레이드하면서 발생한 문제

0. 환경 (개발) - react-native 0.54 -> 0.59 - react 16.3 - mobx-react 5.1 -> 5.4 - mobx 4.3 -> 5.9 - babel ? -> 7 - babel-jest 24.3 -> 24.9 - sdk 26 -> 28 - android build tool 26 -> 28 - gradle 4.4 -> 4.10 - gradle build tool 3.1 -> 3.3 - google services 4.0 -> 4.2 - 64bit architecture 추가 - firebase-core 16 -> firebase-core 17 - react-native-google-signin 1.0 -> react-native-google-signin 2.0 (테스트) - android 8 - galaxy s8 1. 상황   잘 돌아가고 있던 프로젝트를 다시 실행했더니 빌드가 안된다. 찾아보니 패키지 버전 문제인 것 같아서 버전을 전체적으로 올리기로 결정. 2. sdk 버전 업 1) "Manifest merger failed : Attribute application@appComponentFactory..." 에러 발생    https://cishome.tistory.com/108 를 참조해서 gradles.properties에 아래 코드를 추가했다. android.useAndroidX=true android.enableJetifier=true 2) "cannot find symbol ..." 에러 발생   sdk 버전을 올리면서 android.으로 시작하는 패키지가 androidx.로 바뀌어서 못찾아오는 걸로 추정된다.( https://github.com/invertase/react-native-firebase/issues/2332 참조) 이걸 자동으로 해...

Ubuntu 16.04 + Nuxt 2 + Nginx 설정

0. 환경 - ubuntu 16.04 - nuxt 2.10 - node.js 4.6 -> 8.16.2 - npm 3.5 -> 6.4 - nginx 1.10 1. fibers 패키지 설치 오류   nuxt의 dependency인 fibers가 설치가 안돼서 nuxt도 설치되지 않는 문제가 발생했다. fibers 설치 시 node 명령어를 찾아오지 못하는 문제였다. 아래 명령어로 강제로 링크시키면 된다. ln -s /usr/bin/nodejs /usr/bin/node 오류 메시지에 ubuntu 사용자면 apt-get install g++ build-essential 를 실행하라는 메시지가 나오는데 이미 설치되어 있는 것 같다. 2. nuxt를 실행시킬 수 없는 오류   오류 메시지로 node.js를 최신 버전으로 업그레이드하라는 말이 나와서 업그레이드. https://github.com/nodesource/distributions/blob/master/README.md  이 페이지를 참조해서 8.6.12 버전으로 업그레이드했다. 참고로 "curl -sL https://deb.nodesource.com/setup_버전.x | sudo -E bash -" 로 바꾸면 다른 버전도 설치할 수 있다. nvm을 사용해도 되지만 사용자가 여럿일 경우 설치를 진행한 사용자가 아닌 사용자가 nodejs를 사용할 수 없어서 nvm 삭제 후 다시 설치했다. 어떻게(?) 하면 되는 것 같지만 저 위의 방법이 더 편하다. 3. fibers 문제 다시 발생  devDependencies에 있던 fibers를 지우니까 된다... node_modules/를 지우고 전체 패키지를 재설치했다 (sudo npm install) . 4. nginx 설정   사이트 주소로 들어오면 3000포트로 연결하도록 설정하면 된다. nginx경로/sites-enabled/default(파일 이름 변경...

Vue + Nuxt + Handsontable 정리

0. 환경 - Vue 2.6 - Nuxt 2 - handsontable 7.1 - @handonsable/vue 4.1 1. 설치 1) 패키지 설치    https://handsontable.com/docs/7.1.1/frameworks-wrapper-for-vue-installation.html  일단 이 페이지 안내대로 설치한다. 2) nuxt에 적용   보통 외부 패키지를 사용하려면  https://ko.nuxtjs.org/guide/plugins/#vue-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8  이렇게 하는데 플러그인을 만드는 방법이 좀 다르다. https://github.com/handsontable/vue-handsontable-official/issues/70  이 페이지를 참조해서 아래와 같이 작성했다. import Vue from 'vue' import { HotTable } from '@handsontable/vue' export default () => {   if (process.client) {     Vue.component('hot-table', HotTable)   } } nuxt.config.js에는 아래 코드를 추가. ... css: [   'CSS파일경로/handsontable.full.css' ], plugins: [   ...   {src: '~/plugins/플러그인이름.js', ssr: false} ], 클라이언트에서만 적용되는 라이브러리라 그런 것 같다. 2. startRows/startCols와 data property   startRows/startCols보다는 data property가 우선된다. 예를 들어 startRows=10 startCols=10 data=[[null, null,...

CKEditor 4 + SVG-edit 정리

0. 환경 - CKEditor4 : 아마 standard package를 다운받아서 사용 - SVG-edit( https://github.com/SVG-Edit/svgedit ) editor 부분만 사용 - CKEditor에 SVG-edit을 붙인건 내가 한게 아니라 잘 모르겠음. 1. 문제 - SVG-edit에서 객체를 만들고 id를 바꾸고 저장하고 나갔다가 다시 불러오면 자동 생성된 id(svg_XX)로 바뀌어 있음 - 객체를 여러 개 만들고 저장하고 나갔다가 다시 들어오면 만들어진 객체가 자동으로 그룹화되어있음 2. 원인  1) SVG-edit에서는 레이어가 없으면 자동으로 아래 같은 구조로 레이어를 생성 <g class="layer"> <title>Layer 1</title> </g> 2) SVG-edit에서 편집한 내용을 CKEditor 저장할 때 CKEditor가 <title> 안의 내용을 지워버림(<title></title>). title 태그는 head 안에서만 사용할 수 있는 것 같다. 3) SVG-edit에서는 레이어 안의 title 태그로 레이어 제목을 찾아오는데, <title></title>로 저장된 상태에서는 제목을 못찾아와서 레이어가 없는 것으로 간주하고(orphan layer) 현재 만들어진 객체를 다 묶어서 레이어를 다시 생성함 => 객체가 다 그룹화되거나 변경한 id를 레이어가 덮어써버리는 문제 3. 해결시도 1) CKEDitor가 title 태그의 내용을 지우지 못하도록 한다   CKEditor 설정을 아래처럼 변경하면 된다고 해서 시도했으나 실패. window.CKEDITOR.config.allowedContent = true window.CKEDITOR.config.extraAllowedContent = 'title[*]' window.CKEDIT...

Vue + Konva.js 정리

0. 환경 - Vue 2.6 - vue-konva 2.0 1. @click.stop   @click.stop을 쓰면 오류가 발생한다. 자동으로 전달되는 이벤트 객체가 일반 javascript 이벤트 객체가 아니기 때문이다. 일반 javascript의 event객체는 konva가 넘겨주는 event 객체에서는 event.evt로 찾아와야 한다. 즉 event.stopPropagation() === event.evt.stopPropagation()

Nuxt 2 + Vuetify 2 초기 설정

0. 환경 - nuxt 2.0.0 - vuetify 2.0.0 1. nuxt    https://ko.nuxtjs.org/guide/installation  한국어 버전 nuxt 공식 홈페이지에서 starter template를 다운받아서 사용했다. 영어 홈페이지에 들어가니 create-nuxt-app을 사용하라는 걸 보니까 그냥 다운받은게 문제인 것 같기도 하다. 2. vuetify   https://vuetifyjs.com/en/getting-started/quick-start  역시 공식 홈페이지를 따라했다. 첫 설치 시 dist/index.html이 없다는 오류가 발생했지만 무시. 컴파일 에러가 발생하지는 않지만 전혀 적용이 안된다. 3. nuxt-vuetify 설치    https://www.npmjs.com/package/@nuxtjs/vuetify  여기서 시키는대로 설치하면 적용은 된다. 4. custom theme    적용은 되는데 custom theme을 option에 넣어도 적용이 안됨. https://stackoverflow.com/questions/56074338/nuxt-vuetify-how-to-apply-theme-colors/56076778  이 페이지를 참고해서 nuxt.config.js에 아래처럼 작성하면 적용된다. modules: [   ['@nuxtjs/vuetify'] ], vuetify:{   theme: {     themes: {       light: {         primary: "#5755d9",          secondary: "#444291",          accent: "#444...