반응형
SQL: SELECT WHERE(VARCHAR 열) Moodle이 있는 행을 찾을 수 없습니다.오류 "데이터베이스 테이블 external_functions에서 데이터 레코드를 찾을 수 없습니다."
왜 이런 일이 일어나는지 아십니까?
id=76인 열에 'name'에 정확히 해당 문자열이 포함되어 있더라도 'name' 열의 'core_course_get_course_content_content'를 포함하는 행을 찾을 수 없습니다.동일한 문자열로 행을 업데이트하려고 하면 행이 업데이트되지 않습니다('일치된 행: 1 변경됨: 0 경고: 0').
MariaDB [moodle]> SELECT name FROM mdl_external_functions WHERE id = 76;
+--------------------------------------+
| name |
+--------------------------------------+
| core_course_get_course_content_items |
+--------------------------------------+
1 row in set (0.000 sec)
MariaDB [moodle]> SELECT * FROM mdl_external_functions WHERE name = 'core_course_get_course_content_items';
Empty set (0.000 sec)
MariaDB [moodle]> UPDATE mdl_external_functions SET name = 'core_course_get_course_content_items' WHERE id = 76;
Query OK, 0 rows affected (0.000 sec)
Rows matched: 1 Changed: 0 Warnings: 0
테이블
CREATE TABLE `mdl_external_functions` (
`id` bigint(10) NOT NULL AUTO_INCREMENT,
`name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`classname` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`methodname` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`classpath` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`component` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`capabilities` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`services` varchar(1333) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `mdl_extefunc_nam_uix` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=627 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
양쪽을 HEX와 비교:
MariaDB [moodle]> SELECT HEX(name) FROM mdl_external_functions WHERE id = 76;
+--------------------------------------------------------------------------+
| HEX(name) |
+--------------------------------------------------------------------------+
| 636F72655F636F757273655F6765745F636F757273655F636F6E74656E745F6974656D73 |
+--------------------------------------------------------------------------+
1 row in set (0.000 sec)
MariaDB [moodle]> SELECT HEX('core_course_get_course_content_items');
+--------------------------------------------------------------------------+
| HEX('core_course_get_course_content_items') |
+--------------------------------------------------------------------------+
| 636F72655F636F757273655F6765745F636F757273655F636F6E74656E745F6974656D73 |
+--------------------------------------------------------------------------+
1 row in set (0.000 sec)
Moodle 오류 스크린샷:
Moodle에서 Log Level을 Developer로 설정한 후 다음 메시지가 나타납니다.
error : Can't find data record in database table external_functions.
errorcode : invalidrecord
stacktrace : * line 1646 of /lib/dml/moodle_database.php: dml_missing_record_exception thrown
* line 1622 of /lib/dml/moodle_database.php: call to moodle_database->get_record_select()
* line 73 of /lib/externallib.php: call to moodle_database->get_record()
* line 196 of /lib/externallib.php: call to external_api::external_function_info()
* line 81 of /lib/ajax/service.php: call to external_api::call_external_function()
debuginfo : SELECT * FROM {external_functions} WHERE name = ?
[array (
0 => 'core_course_get_course_content_items',
)]
Error code: invalidrecord
아마 최선은 아닐지도 모르지만, 나는 단지 다음과 같이 했고, 지금은 효과가 있다.
MariaDB [moodle]> UPDATE mdl_external_functions SET name = 'abc' WHERE id = 76;
Query OK, 1 row affected (0.014 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [moodle]> UPDATE mdl_external_functions SET name = 'core_course_get_course_content_items' WHERE id = 76;
Query OK, 1 row affected (0.001 sec)
Rows matched: 1 Changed: 1 Warnings: 0
언급URL : https://stackoverflow.com/questions/70986551/sqlcant-find-row-with-select-where-varchar-column-moodle-error-cant-find
반응형
'programing' 카테고리의 다른 글
특정 구성 요소에 대해 특정 Vue 경고를 사용하지 않도록 설정할 수 있습니까? (0) | 2022.12.18 |
---|---|
중복 키 업데이트 시 삽입과 동일 (0) | 2022.12.18 |
주피터 노트북의 셀을 접다 (0) | 2022.11.08 |
"java.nio.charset"을 피하기 위한 모든 포함 문자 집합.잘못된 입력 예외:입력 길이 = 1인치? (0) | 2022.11.08 |
mysqldump: 실행할 수 없습니다.information_schema에 알 수 없는 테이블 'column_statistics'가 있습니다. (0) | 2022.11.08 |