Common lisp (GETENV XXX)不是Lisp字符串或指针

Common lisp (GETENV XXX)不是Lisp字符串或指针,common-lisp,Common Lisp,我害怕问这种基本的问题 我想通过ENV管理数据库配置,但出现了一个错误 这是我的代码: (defconfig :common `(:databases ((:maindb :mysql :database-name (uiop:getenv "DATABASE_NAME") :host (uiop:getenv "DATABASE_HOST") :port

我害怕问这种基本的问题

我想通过ENV管理数据库配置,但出现了一个错误

这是我的代码:

(defconfig :common
    `(:databases ((:maindb :mysql
                      :database-name (uiop:getenv "DATABASE_NAME")
                      :host (uiop:getenv "DATABASE_HOST")
                      :port (uiop:getenv "DATABASE_PORT")
                      :username (uiop:getenv "DATABASE_USERNAME")
                      :password (uiop:getenv "DATABASE_PASSWORD")))))
这是sbcl错误:

 1(GETENV DATABASE_HOST) is not a Lisp string or pointer.
 2   [Condition of type SIMPLE-ERROR]
 3
 4Restarts:
 5 0: [ABORT] abort thread (#<THREAD "hunchentoot-worker-127.0.0.1:57248" RUNNING {10026777C3}>)
 6
 7Backtrace:
 8  0: ((:METHOD CFFI:TRANSLATE-TO-FOREIGN (T CFFI::FOREIGN-STRING-TYPE)) (UIOP/OS:GETENV "DATABASE_HOST") #<unused argument>) [fast-method]
 9      Locals:
10        CFFI::OBJ = (UIOP/OS:GETENV "DATABASE_HOST")
11  1: (COM.HACKINGHAT.CL-MYSQL-SYSTEM::MYSQL-REAL-CONNECT #.(SB-SYS:INT-SAP #X7FFFE0015E50) (UIOP/OS:GETENV "DATABASE_HOST") (UIOP/OS:GETENV "DATABASE_USERNAME") (UIOP/OS:GETENV "DATABASE_PASSWORD") (UIOP/O..
12      Locals:
13        CLIENT-FLAG = 0
14        DATABASE = (UIOP/OS:GETENV "DATABASE_NAME")
15        HOST = (UIOP/OS:GETENV "DATABASE_HOST")
16        MYSQL = #.(SB-SYS:INT-SAP #X7FFFE0015E50)
17        PASSWORD = (UIOP/OS:GETENV "DATABASE_PASSWORD")
18        PORT = (UIOP/OS:GETENV "DATABASE_PORT")
19        UNIX-SOCKET = #.(SB-SYS:INT-SAP #X00000000)
20        USER = (UIOP/OS:GETENV "DATABASE_USERNAME")
21  2: ((:METHOD COM.HACKINGHAT.CL-MYSQL-SYSTEM::CONNECT-TO-SERVER (COM.HACKINGHAT.CL-MYSQL-SYSTEM:CONNECTION-POOL)) #<COM.HACKINGHAT.CL-MYSQL-SYSTEM:CONNECTION-POOL {1008B324F3}>) [fast-method]
1(GETENV DATABASE_HOST)不是Lisp字符串或指针。
2[简单错误类型的条件]
3.
4重新启动:
5 0:[中止]中止线程(#)
6.
7回溯:
8 0:(:方法CFFI:TRANSLATE-TO-FOREIGN(T CFFI::FOREIGN-STRING-TYPE))(UIOP/OS:GETENV“DATABASE_HOST”)#[快速方法]
9本地人:
10 CFFI::OBJ=(UIOP/OS:GETENV“数据库\主机”)
11.1:(COM.HACKINGHAT.CL-MYSQL-SYSTEM::MYSQL-REAL-CONNECT#(SB-SYS:INT-SAP#X7FFFE0015E50)(UIOP/OS:GETENV“DATABASE_HOST”)(UIOP/OS:GETENV“DATABASE_USERNAME”)(UIOP/OS:GETENV“DATABASE_PASSWORD”)(UIOP/O)。。
12名当地人:
13客户端标志=0
14数据库=(UIOP/OS:GETENV“数据库名称”)
15主机=(UIOP/OS:GETENV“数据库\主机”)
16 MYSQL=#(SB-SYS:INT-SAP#X7FFFE0015E50)
17密码=(UIOP/OS:GETENV“数据库密码”)
18端口=(UIOP/OS:GETENV“数据库_端口”)
19 UNIX-SOCKET=#(SB-SYS:INT-SAP#X00000000)
20用户=(UIOP/OS:GETENV“数据库\用户名”)
21 2:(:METHOD COM.HACKINGHAT.CL-MYSQL-SYSTEM::CONNECT-TO-SERVER(COM.HACKINGHAT.CL-MYSQL-SYSTEM:CONNECTION-POOL))#[快速方法]
在要评估的零件之前,您缺少:

(defconfig :common
    `(:databases ((:maindb :mysql
                           :database-name ,(uiop:getenv "DATABASE_NAME")
                           :host ,(uiop:getenv "DATABASE_HOST")
                           :port ,(uiop:getenv "DATABASE_PORT")
                           :username ,(uiop:getenv "DATABASE_USERNAME")
                           :password ,(uiop:getenv "DATABASE_PASSWORD")))))
在要评估的零件之前缺少:

(defconfig :common
    `(:databases ((:maindb :mysql
                           :database-name ,(uiop:getenv "DATABASE_NAME")
                           :host ,(uiop:getenv "DATABASE_HOST")
                           :port ,(uiop:getenv "DATABASE_PORT")
                           :username ,(uiop:getenv "DATABASE_USERNAME")
                           :password ,(uiop:getenv "DATABASE_PASSWORD")))))