сбой базы данных chef базы данных на raw sql - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь выполнить необработанный sql для создания пользователя с несколькими грантами, но я получаю неопределенную ошибку метода.Я использую v4.0.9 из базы данных поваренной книги шеф-повара.

mysql_database[create random grants] action query

       ================================================================================
       Error executing action `query` on resource 'mysql_database[create datadog grants]'
       ================================================================================

       NoMethodError
       -------------
       undefined method `close' for nil:NilClass

       Cookbook Trace:
       ---------------
       /tmp/kitchen/cache/cookbooks/database/libraries/provider_database_mysql.rb:153:in `close_query_client'

       Resource Declaration:
       ---------------------
       # In /tmp/kitchen/cache/cookbooks/xxxx/recipes/xxxxxx.rb

       156: mysql_database 'create random grants' do
       157:   connection mysql_connection_info
       158:   sql "GRANT SELECT, PROCESS, REPLICATION CLIENT ON *.* TO 'testuser'@'localhost' IDENTIFIED BY 'dummy';"
       159:   #sql 'SELECT 1'
       160:   action :query
       161: end
       162:

Ответы [ 2 ]

2 голосов
/ 08 апреля 2019

если вы используете поваренную книгу database , то она давно устарела - ее разработка прекратилась более 2 лет назад, а ее хранилище заархивировано.

вот сообщение об устаревании:

Эта кулинарная книга устарела. Первоначально предполагалось абстрагировать детали реализации базы данных от конечного пользователя. Оглядываясь назад, это было ошибкой, поскольку трудно / невозможно создать общий интерфейс для баз данных, который работает во всех системах. Вместо этого мы планируем переместить отдельных провайдеров в соответствующие кулинарные книги (mysql, postgresql, sqlite, sql_server), где они могут полностью использовать набор функций базовых систем БД.

Я предлагаю вам держаться подальше от этой кулинарной книги.

1 голос
/ 15 апреля 2019

Я нахожусь в том же положении, и я использую эту устаревшую поваренную книгу. Чтобы запустить этот ресурс, вам нужно использовать определенную редакцию поваренной книги - depends 'database', '4.0.8'

, поэтому, если вы добавите это к metadata.rb, ваш код сверху будет работать.

Это код с моей стороны:

mysql_database 'create slave user' do
    connection mysql_connection_info
    sql "GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '#{slave_password_data_bag_item['password']}'"
    action :query
end
...