mito icon indicating copy to clipboard operation
mito copied to clipboard

mito:migrate-table fails

Open cxxxr opened this issue 3 years ago • 0 comments

$ createdb mito-example
(ql:quickload '(:mito :uuid))

(defclass uuid-pk-mixin ()
  ((uuid :col-type (:varchar 36)
         :initform (uuid:make-v4-uuid)
         :accessor object-uuid
         :primary-key t))
  (:metaclass mito:dao-table-mixin))

(mito:deftable hoge (uuid-pk-mixin)
  ())

(mito:connect-toplevel :postgres :database-name "mito-example")

(mapc #'mito:execute-sql (mito:table-definition 'hoge))
(ql:quickload '(:mito))

(defclass hoge () ()
  (:auto-pk :uuid))

(mito:connect-toplevel :postgres :database-name "mito-example")

(mito:migrate-table 'hoge)

;;; DB Error: there is no parameter $1 (Code: 42P02)

stack trace

  0: ((:METHOD DBI.DRIVER:EXECUTE-USING-CONNECTION (DBD.POSTGRES:DBD-POSTGRES-CONNECTION DBD.POSTGRES:DBD-POSTGRES-QUERY T)) #<DBD.POSTGRES:DBD-POSTGRES-CONNECTION {100535CF73}> #<DBD.POSTGRES:DBD-POSTGRES..
       Locals:
         DBD.POSTGRES::CONN = #<DBD.POSTGRES:DBD-POSTGRES-CONNECTION {100535CF73}>
         DBD.POSTGRES::PARAMS = NIL
         DBD.POSTGRES::QUERY = #<DBD.POSTGRES:DBD-POSTGRES-QUERY {1003C60773}>
  1: (MITO.UTIL:EXECUTE-WITH-RETRY #<DBD.POSTGRES:DBD-POSTGRES-QUERY {1003C60773}> NIL)
       Locals:
         BINDS = NIL
         QUERY = #<DBD.POSTGRES:DBD-POSTGRES-QUERY {1003C60773}>
         RETRIED = NIL
  2: ((LAMBDA (MITO.DB::QUERY) :IN MITO.DB:EXECUTE-SQL) #<unavailable argument>)
       [No Locals]
  3: (MITO.UTIL::CALL-WITH-PREPARED-QUERY #<DBD.POSTGRES:DBD-POSTGRES-CONNECTION {100535CF73}> "ALTER TABLE \"hoge\" ADD COLUMN \"id\" character varying(36) NOT NULL DEFAULT ? PRIMARY KEY" #<FUNCTION (LAMB..
       Locals:
         CONN = #<DBD.POSTGRES:DBD-POSTGRES-CONNECTION {100535CF73}>
         QUERY = #<DBD.POSTGRES:DBD-POSTGRES-QUERY {1003C60773}>
         SQL = "ALTER TABLE \"hoge\" ADD COLUMN \"id\" character varying(36) NOT NULL DEFAULT ? PRIMARY KEY"
         THUNK = #<FUNCTION (LAMBDA (MITO.DB::QUERY) :IN MITO.DB:EXECUTE-SQL) {1003C6030B}>
         USE-PREPARE-CACHED = NIL
  4: ((:METHOD MITO.DB:EXECUTE-SQL (STRING)) "ALTER TABLE \"hoge\" ADD COLUMN \"id\" character varying(36) NOT NULL DEFAULT ? PRIMARY KEY" NIL) [fast-method]
       Locals:
         MITO.DB::BINDS = NIL
         MITO.DB::SQL = "ALTER TABLE \"hoge\" ADD COLUMN \"id\" character varying(36) NOT NULL DEFAULT ? PRIMARY KEY"
  5: ((SB-PCL::EMF MITO.DB:EXECUTE-SQL) #<unused argument> #<unused argument> "ALTER TABLE \"hoge\" ADD COLUMN \"id\" character varying(36) NOT NULL DEFAULT ? PRIMARY KEY" NIL)
       Locals:
         SB-PCL::.ARG0. = "ALTER TABLE \"hoge\" ADD COLUMN \"id\" character varying(36) NOT NULL DEFAULT ? PRIMARY KEY"
         SB-DEBUG::MORE = (NIL)
  6: ((:METHOD MITO.DB:EXECUTE-SQL (SXQL.SQL-TYPE:SQL-STATEMENT)) #<SXQL-STATEMENT: ALTER TABLE "hoge" ADD COLUMN "id" character varying(36) NOT NULL DEFAULT '55bcace9-0f0b-4267-925c-4b6c9581eff4' PRIMARY ..
       Locals:
         MITO.DB::SQL = #<SXQL-STATEMENT: ALTER TABLE "hoge" ADD COLUMN "id" character varying(36) NOT NULL DEFAULT '55bcace9-0f0b-4267-925c-4b6c9581eff4' PRIMARY KEY>
  7: ((SB-PCL::EMF MITO.DB:EXECUTE-SQL) #<unused argument> #<unused argument> #<SXQL-STATEMENT: ALTER TABLE "hoge" ADD COLUMN "id" character varying(36) NOT NULL DEFAULT '55bcace9-0f0b-4267-925c-4b6c9581ef..
       Locals:
         SB-PCL::.ARG0. = #<SXQL-STATEMENT: ALTER TABLE "hoge" ADD COLUMN "id" character varying(36) NOT NULL DEFAULT '55bcace9-0f0b-4267-925c-4b6c9581eff4' PRIMARY KEY>
         SB-DEBUG::MORE = NIL
  8: ((:METHOD MITO.MIGRATION.TABLE:MIGRATE-TABLE (MITO.DAO.TABLE:DAO-TABLE-CLASS)) #<MITO.DAO.TABLE:DAO-TABLE-CLASS COMMON-LISP-USER::HOGE>) [fast-method]
       Locals:
         CLASS = #<MITO.DAO.TABLE:DAO-TABLE-CLASS COMMON-LISP-USER::HOGE>

inspect

#<DBD.POSTGRES:DBD-POSTGRES-QUERY {1003C60773}>
--------------------
Class: #<STANDARD-CLASS DBD.POSTGRES:DBD-POSTGRES-QUERY>
--------------------
 Group slots by inheritance [ ]
 Sort slots alphabetically  [X]

All Slots:
[ ]  CACHED     = NIL
[ ]  CONNECTION = #<DBD.POSTGRES:DBD-POSTGRES-CONNECTION {100535CF73}>
[ ]  FREEDP     = NIL
[ ]  NAME       = "PREPARED-STATEMENT862"
[ ]  PREPARED   = NIL
[ ]  RESULTS    = #<unbound>
[ ]  ROW-COUNT  = NIL
[ ]  SQL        = "ALTER TABLE \"hoge\" ADD COLUMN \"id\" character varying(36) NOT NULL DEFAULT $1 PRIMARY KEY"

cxxxr avatar Mar 06 '21 18:03 cxxxr